[{"data":1,"prerenderedAt":52707},["ShallowReactive",2],{"cmd-posts":3,"author-Vantol Bennett":28773},[4,136,531,3517,4079,8240,8302,9381,10791,10997,11062,11113,11341,12035,12670,12995,13754,18717,20061,20158,20910,21137,22517,23331,24471,28160,28752],{"id":5,"title":6,"author":7,"body":11,"canonical":115,"categories":115,"date":116,"description":117,"excerpt":115,"extension":118,"img":119,"keywords":120,"language":127,"meta":128,"navigation":129,"ogImage":115,"path":130,"rating":131,"readTime":132,"seo":133,"stem":134,"tag":125,"__hash__":135},"blog\u002Fblog\u002Fadd-env-variables-runtime.md","Adding environment variables to the runtime in Nuxt3 [Beta]",{"name":8,"website":9,"img":10},"Vantol Bennett","www.teammps.com","https:\u002F\u002Fres.cloudinary.com\u002Fddszyeplg\u002Fimage\u002Fupload\u002Fv1636919468\u002FDSC_0988_zsfhgy.jpg",{"type":12,"value":13,"toc":109},"minimark",[14,19,23,30,35,43,46,56,59,63,66,71,74,76,82,88,91,97,100,106],[15,16,18],"h1",{"id":17},"runtime-config-in-nuxt-3","Runtime Config in Nuxt 3",[20,21,22],"p",{},"Nuxt3 is still in beta and is not ready for production use (ish), but that hasn't stopped many developers to take advantage of the unique features, power and significant performance boost that Nuxt3 offers.",[24,25,27],"blog-alert",{"type":26},"warning",[20,28,29],{},"Nuxt 3 is now stable! The information below refers to early RC versions but the core concepts of Runtime Config remain valid.",[31,32,34],"h2",{"id":33},"exposing-environment-variables-to-the-runtime","Exposing Environment Variables to the Runtime",[20,36,37,38,42],{},"All the heavy lifting is done by Nuxt in the nuxt.config.js file. This file is where you can set up the environment variables that you want to expose to the rest of the application. This is done by adding the ",[39,40,41],"code",{},"privateRuntimeConfig"," or publicRuntimeConfig` property to the nuxt.config.js file. As the name suggests, both of these properties are used based on accessiblity on the client side or server side.",[20,44,45],{},"Example:",[47,48,53],"pre",{"className":49,"code":51,"language":52},[50],"language-text","\nexport default defineNuxtConfig({\n  ...\n  publicRuntimeConfig: {\n    \u002F\u002F Will be available on both server and client\n    apiUrl: 'https:\u002F\u002Fapi.example.com',\n  },\n  privateRuntimeConfig: {\n    apiUrl: process.env.API_URL,\n    apiKey: process.env.API_KEY,\n    ...\n  },\n  ...\n})\n","text",[39,54,51],{"__ignoreMap":55},"",[20,57,58],{},"The publicRuntimeConfig property will be added to Nuxt pages through the apiUrl allowing for universal access for apiUrl to both client and server.",[31,60,62],{"id":61},"environmental-variables-using-supabase","Environmental Variables - Using Supabase",[20,64,65],{},"Ok so, whether you are a new developer or a experienced one environment variables are common way to access configuration. We add a .env file to the root directory, Nuxt will added these variables to process.env and is accessible in nuxt.config.js. Let see what how to add Supabase url and key.",[20,67,68],{},[39,69,70],{},"npm install @supabase\u002Fsupabase-js",[72,73],"hr",{},[20,75,45],{},[47,77,80],{"className":78,"code":79,"language":52},[50],".env\n\nSUPABASE_URL=\u002F* URL KEY HERE*\u002F\nSUPABASE_ANON_KEY=\u002F* KEY ADDED HERE *\u002F\n\n",[39,81,79],{"__ignoreMap":55},[47,83,86],{"className":84,"code":85,"language":52},[50],"\nexport default defineNuxtConfig({\n  ...\n  publicRuntimeConfig: {\n    \u002F\u002F Will be available on both server and client\n    SUPABASE_URL: process.env.SUPABASE_URL,\n    SUPABASE_ANON_KEY: process.env.SUPABASE_ANON_KEY\n  },\n  ...\n})\n",[39,87,85],{"__ignoreMap":55},[20,89,90],{},"This is important part of this post, accessing the supabase variables in the publicRunTime config can only be done on the client side using the useRunTimeConfig in the setup or lifecycle hooks. This is a crucial step to remember!",[47,92,95],{"className":93,"code":94,"language":52},[50],"\u003Ctemplate>\n  \u003Cdiv>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n\n\u003Cscript setup>\nconst config = useRuntimeConfig()\n\u003C\u002Fscript>\n",[39,96,94],{"__ignoreMap":55},[20,98,99],{},"useRuntimeConfig only works in setup or lifecycle hooks.... this was a pain for me as I could not discover the error because of this, and more importantly since env variables are accessed in the publicRuntimeConfig so only on the client side. Therefore in setting up we could connect supabase with our runtime.",[47,101,104],{"className":102,"code":103,"language":52},[50],"import { createClient } from '@supabase\u002Fsupabase-js'\n\n.....\n\n....\n\nconst config = useRuntimeConfig()\n\nconst supabase = createClient(config.SUPABASE_URL, config.SUPABASE_KEY)\n\n\u002F* Followed by the supabase implementation you would like to work on*\u002F\n",[39,105,103],{"__ignoreMap":55},[20,107,108],{},"And thats how you get access to your env variables. In my next post we will explore how to you use composables and plugins to achieve this whole setup but with cleaner out look.",{"title":55,"searchDepth":110,"depth":110,"links":111},3,[112,114],{"id":33,"depth":113,"text":34},2,{"id":61,"depth":113,"text":62},null,"2022-01-15","Exposing environment variables to the runtime in Nuxt3","md","https:\u002F\u002Fres.cloudinary.com\u002Fddszyeplg\u002Fimage\u002Fupload\u002Fv1642350413\u002Fvantol\u002Fblack-text_emxagi.png",[121,122,123,124,125,126],"developer","jamaican","vue.js","supabase","Nuxt3","vite","Javascript - Vue.js",{},true,"\u002Fblog\u002Fadd-env-variables-runtime",0,10,{"title":6,"description":117},"blog\u002Fadd-env-variables-runtime","4SK4zZT99RtjhiV4e4jmQppT3cFMuHnutSwWRAwb8Lo",{"id":137,"title":138,"author":139,"body":140,"canonical":115,"categories":115,"date":511,"description":512,"excerpt":513,"extension":118,"img":521,"keywords":522,"language":524,"meta":525,"navigation":129,"ogImage":115,"path":526,"rating":131,"readTime":393,"seo":527,"stem":528,"tag":529,"__hash__":530},"blog\u002Fblog\u002Fbuilding-vue3-progressive-app.md","Building a Vue 3 Progressive Koffee Lovers App Part One",{"name":8,"website":9,"img":10},{"type":12,"value":141,"toc":503},[142,146,150,153,156,160,168,171,177,181,184,190,193,199,208,212,215,219,225,229,232,238,241,475,478,481,487,490,496,499],[15,143,145],{"id":144},"what-are-we-making","What are We Making?",[31,147,149],{"id":148},"koffee-lovers-vue3-pwa","Koffee Lovers Vue3 PWA",[20,151,152],{},"In this post, we will look at building a coffee web application with progressive web app (PWA).",[20,154,155],{},"Examining the workings of Vue3, creating components, using directives and use props to pass data to components.  We can also try and utilize mixins to reduce reptition of code by abstracting out similar features in these components.",[31,157,159],{"id":158},"teacher-mode-what-is-a-pwa","Teacher Mode: What is a PWA?",[161,162,165],"callout",{"icon":163,"title":164},"🎓","Teacher Mode",[20,166,167],{},"“PWAs are special web apps that can be installed on the user's computer, and the browser manages these installed apps. They differ from regular web apps as they let us access some computer hardware natively. When we visit a PWA in our browsers, we can choose to install the PWA”",[20,169,170],{},"This is basically what a PWA is - an app that can work offline once install on the users device.",[172,173,174],"tip",{},[20,175,176],{},"Always test your PWA in an Incognito window or after clearing site data to ensure the service worker is fetching fresh assets correctly during development.",[31,178,180],{"id":179},"lets-code","Lets Code!",[20,182,183],{},"We will be using Vite for quick prototyping our app.",[47,185,188],{"className":186,"code":187,"language":52},[50],"npm init vite@latest\n",[39,189,187],{"__ignoreMap":55},[20,191,192],{},"Follow the prompt name your app whatever you like but we will call this vue3-koffee-lovers",[47,194,197],{"className":195,"code":196,"language":52},[50],"npm run dev\n",[39,198,196],{"__ignoreMap":55},[20,200,201,202],{},"Your development server should be running on ",[203,204,205],"a",{"href":205,"rel":206},"http:\u002F\u002Flocalhost:3000",[207],"nofollow",[31,209,211],{"id":210},"layout","Layout",[20,213,214],{},"Generally its important to get the layout of your web application up and running by creating all the folders necessary for you web application to work smoothly. One such folder is your Components Folder. Vue.js is a progressive framework for building user interfaces, through the use of components.",[31,216,218],{"id":217},"setting-up-pwa","Setting up PWA",[47,220,223],{"className":221,"code":222,"language":52},[50],"npm install vite-plugin-pwa workbox-precaching -D\n",[39,224,222],{"__ignoreMap":55},[31,226,228],{"id":227},"config","Config",[20,230,231],{},"Configuration can be done in vite.config.js file. Installation of the plugin would look something this:",[47,233,236],{"className":234,"code":235,"language":52},[50],"import { defineConfig } from \"vite\"\nimport vue from \"@vitejs\u002Fplugin-vue\"\nimport { VitePWA } from \"vite-plugin-pwa\"\n\nexport default defineConfig({\n     plugins: [ vue(), VitePWA()],\n})\n\n",[39,237,235],{"__ignoreMap":55},[20,239,240],{},"This basically enables the plugin however there are additional setup required in order to get PWA to work correctly on devices. Look at the following code:",[47,242,247],{"className":243,"code":244,"language":245,"meta":246,"style":55},"language-\u002F\u002F shiki shiki-themes github-light github-dark","export default defineConfig({\n  plugins: [\n    vue(),\n    VitePWA({\n      mode: \"development\",\n      base: \"\u002F\",\n      srcDir: \"src\",\n      filename: \"sw.ts\",\n      includeAssets: [\"\u002Ffavicon.png\"],\n      strategies: \"injectManifest\",\n      manifest: {\n        name: \"Test Project\",\n        short_name: \"Test\",\n        theme_color: \"#ffffff\",\n        start_url: \"\u002F\",\n        display: \"standalone\",\n        background_color: \"#ffffff\",\n        icons: [\n          {\n            src: \"icon-192.png\",\n            sizes: \"192x192\",\n            type: \"image\u002Fpng\",\n          },\n          {\n            src: \"\u002Ficon-512.png\",\n            sizes: \"512x512\",\n            type: \"image\u002Fpng\",\n          },\n          {\n            src: \"icon-512.png\",\n            sizes: \"512x512\",\n            type: \"image\u002Fpng\",\n            purpose: \"any maskable\",\n          },\n        ],\n      },\n    }),\n  ],\n})\n\n","\u002F\u002F","https:\u002F\u002Fvitejs.dev\u002Fconfig\u002F",[39,248,249,257,262,267,273,279,285,291,297,303,308,314,320,326,332,338,344,350,356,362,368,374,380,386,391,397,403,408,413,418,424,429,434,440,445,451,457,463,469],{"__ignoreMap":55},[250,251,254],"span",{"class":252,"line":253},"line",1,[250,255,256],{},"export default defineConfig({\n",[250,258,259],{"class":252,"line":113},[250,260,261],{},"  plugins: [\n",[250,263,264],{"class":252,"line":110},[250,265,266],{},"    vue(),\n",[250,268,270],{"class":252,"line":269},4,[250,271,272],{},"    VitePWA({\n",[250,274,276],{"class":252,"line":275},5,[250,277,278],{},"      mode: \"development\",\n",[250,280,282],{"class":252,"line":281},6,[250,283,284],{},"      base: \"\u002F\",\n",[250,286,288],{"class":252,"line":287},7,[250,289,290],{},"      srcDir: \"src\",\n",[250,292,294],{"class":252,"line":293},8,[250,295,296],{},"      filename: \"sw.ts\",\n",[250,298,300],{"class":252,"line":299},9,[250,301,302],{},"      includeAssets: [\"\u002Ffavicon.png\"],\n",[250,304,305],{"class":252,"line":132},[250,306,307],{},"      strategies: \"injectManifest\",\n",[250,309,311],{"class":252,"line":310},11,[250,312,313],{},"      manifest: {\n",[250,315,317],{"class":252,"line":316},12,[250,318,319],{},"        name: \"Test Project\",\n",[250,321,323],{"class":252,"line":322},13,[250,324,325],{},"        short_name: \"Test\",\n",[250,327,329],{"class":252,"line":328},14,[250,330,331],{},"        theme_color: \"#ffffff\",\n",[250,333,335],{"class":252,"line":334},15,[250,336,337],{},"        start_url: \"\u002F\",\n",[250,339,341],{"class":252,"line":340},16,[250,342,343],{},"        display: \"standalone\",\n",[250,345,347],{"class":252,"line":346},17,[250,348,349],{},"        background_color: \"#ffffff\",\n",[250,351,353],{"class":252,"line":352},18,[250,354,355],{},"        icons: [\n",[250,357,359],{"class":252,"line":358},19,[250,360,361],{},"          {\n",[250,363,365],{"class":252,"line":364},20,[250,366,367],{},"            src: \"icon-192.png\",\n",[250,369,371],{"class":252,"line":370},21,[250,372,373],{},"            sizes: \"192x192\",\n",[250,375,377],{"class":252,"line":376},22,[250,378,379],{},"            type: \"image\u002Fpng\",\n",[250,381,383],{"class":252,"line":382},23,[250,384,385],{},"          },\n",[250,387,389],{"class":252,"line":388},24,[250,390,361],{},[250,392,394],{"class":252,"line":393},25,[250,395,396],{},"            src: \"\u002Ficon-512.png\",\n",[250,398,400],{"class":252,"line":399},26,[250,401,402],{},"            sizes: \"512x512\",\n",[250,404,406],{"class":252,"line":405},27,[250,407,379],{},[250,409,411],{"class":252,"line":410},28,[250,412,385],{},[250,414,416],{"class":252,"line":415},29,[250,417,361],{},[250,419,421],{"class":252,"line":420},30,[250,422,423],{},"            src: \"icon-512.png\",\n",[250,425,427],{"class":252,"line":426},31,[250,428,402],{},[250,430,432],{"class":252,"line":431},32,[250,433,379],{},[250,435,437],{"class":252,"line":436},33,[250,438,439],{},"            purpose: \"any maskable\",\n",[250,441,443],{"class":252,"line":442},34,[250,444,385],{},[250,446,448],{"class":252,"line":447},35,[250,449,450],{},"        ],\n",[250,452,454],{"class":252,"line":453},36,[250,455,456],{},"      },\n",[250,458,460],{"class":252,"line":459},37,[250,461,462],{},"    }),\n",[250,464,466],{"class":252,"line":465},38,[250,467,468],{},"  ],\n",[250,470,472],{"class":252,"line":471},39,[250,473,474],{},"})\n",[20,476,477],{},"Every PWA must have a manifest. A Manifest is a file that defines (in JSON format) the name of the application, the background color that it will have on the device once installed, the location, formats of the icons used and the root url for PWA (web application can have different url for web and PWA). That is, the minimum requirements necessary for PWA.",[20,479,480],{},"Next is to config the Service Worker (this allows code to run in the background and secondary actions being able to work). Service Worker is located in src\u002Fswt.(js or ts)",[47,482,485],{"className":483,"code":484,"language":52},[50],"import { precacheAndRoute } from 'workbox-precaching'\ndeclare let self: ServiceWorkerGlobalScope\nself.addEventListener('message', (event) => {\n  if (event.data && event.data.type === 'SKIP_WAITING') self.skipWaiting()\n})\n\u002F\u002F self.__WB_MANIFEST is default injection point\nprecacheAndRoute(self.__WB_MANIFEST)\n",[39,486,484],{"__ignoreMap":55},[20,488,489],{},"Finally! its just to register the PWA using a component.",[47,491,494],{"className":492,"code":493,"language":52},[50],"\u003Cscript lang=\"ts\">\nimport { defineComponent } from \"vue\";\nimport { useRegisterSW } from \"virtual:pwa-register\u002Fvue\";\nconst { updateServiceWorker } = useRegisterSW();\nexport default defineComponent({\n  name: \"ReloadPWA\",\n  setup() {\n    const { offlineReady, needRefresh, updateServiceWorker } = useRegisterSW();\n    const close = async () => {\n      offlineReady.value = false;\n      needRefresh.value = false;\n    };\n    return { offlineReady, needRefresh, updateServiceWorker, close };\n  },\n  methods: {\n    async close() {\n      this.offlineReady.value = false;\n      this.needRefresh.value = false;\n    },\n    async updateServiceWorker() {\n      await updateServiceWorker();\n    },\n  },\n});\n\u003C\u002Fscript>\n",[39,495,493],{"__ignoreMap":55},[20,497,498],{},"Once connection is made in this component to App.vue, PWA will be fully setup",[500,501,502],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":55,"searchDepth":110,"depth":110,"links":504},[505,506,507,508,509,510],{"id":148,"depth":113,"text":149},{"id":158,"depth":113,"text":159},{"id":179,"depth":113,"text":180},{"id":210,"depth":113,"text":211},{"id":217,"depth":113,"text":218},{"id":227,"depth":113,"text":228},"2022-01-20","Examine the inner workings of a Vue 3 app combining technologies like Supabase, Pinia to complete this code.",{"type":12,"value":514},[515,517,519],[15,516,145],{"id":144},[31,518,149],{"id":148},[20,520,152],{},"https:\u002F\u002Fres.cloudinary.com\u002Fddszyeplg\u002Fimage\u002Fupload\u002Fv1642478176\u002Fvantol\u002FScreenshot_2021-07-29_at_11.07.21_PM_mepvjg.png",[121,122,123,124,523,126],"pinia","Vue.js",{},"\u002Fblog\u002Fbuilding-vue3-progressive-app",{"title":138,"description":512},"blog\u002Fbuilding-vue3-progressive-app","Coffee App","nSXNk7VFe35Q4XtBMRQ7h9qffsD9OFtiLz6IpNEqhfs",{"id":532,"title":533,"author":534,"body":536,"canonical":115,"categories":115,"date":3470,"description":3471,"excerpt":3472,"extension":118,"img":3502,"keywords":3503,"language":3510,"meta":3511,"navigation":129,"ogImage":115,"path":3512,"rating":275,"readTime":132,"seo":3513,"stem":3514,"tag":3515,"__hash__":3516},"blog\u002Fblog\u002Fbun-nitro-stack.md","Bun + Nitro: The Fast Server Stack for 2026",{"name":8,"img":10,"website":535},"https:\u002F\u002Fvantolbennett.com",{"type":12,"value":537,"toc":3438},[538,542,550,557,560,579,586,590,593,597,629,635,637,641,644,733,736,743,745,749,753,756,812,815,833,835,839,842,877,882,885,897,900,992,994,998,1001,1008,1078,1081,1083,1087,1090,1096,1166,1172,1347,1350,1687,1689,1693,1696,1711,1718,1721,1740,1742,1746,1749,1754,2413,2416,2452,2454,2458,2463,2466,2627,2631,2634,2717,2721,2724,2911,2913,2917,2921,3029,3033,3057,3059,3063,3067,3072,3089,3093,3149,3153,3213,3217,3220,3244,3251,3253,3257,3260,3277,3281,3347,3349,3353,3359,3390,3393,3397,3414,3418,3429,3432,3435],[15,539,541],{"id":540},"introduction","Introduction",[20,543,544,545,549],{},"The JavaScript ecosystem is evolving fast, and ",[546,547,548],"strong",{},"Bun"," is leading the charge. Since its 1.0 release, Bun has proven itself as a legitimate alternative to Node.js—offering significantly faster startup times, native TypeScript support, and an all-in-one toolkit that includes a package manager, bundler, and test runner.",[20,551,552,553,556],{},"When paired with ",[546,554,555],{},"Nitro",", you get a server stack that's both incredibly fast and deployment-agnostic.",[20,558,559],{},"In this post, we'll explore:",[561,562,563,567,570,573,576],"ul",{},[564,565,566],"li",{},"Why Bun matters in 2026",[564,568,569],{},"Setting up Bun with Nitro",[564,571,572],{},"Performance benefits and benchmarks",[564,574,575],{},"Migration strategies from Node.js",[564,577,578],{},"Real-world deployment",[20,580,581,582,585],{},"Let's build the ",[546,583,584],{},"fastest server stack"," you've ever used.",[15,587,589],{"id":588},"why-bun-in-2026","Why Bun in 2026?",[20,591,592],{},"Bun isn't just a faster Node.js—it's a reimagining of the JavaScript runtime. Here's what makes it special:",[31,594,596],{"id":595},"key-features","Key Features",[561,598,599,605,611,617,623],{},[564,600,601,604],{},[546,602,603],{},"Native TypeScript"," — No transpilation needed, runs .ts files directly",[564,606,607,610],{},[546,608,609],{},"Zig-based runtime"," — Built with performance in mind from the ground up",[564,612,613,616],{},[546,614,615],{},"All-in-one toolkit"," — Package manager, bundler, test runner included",[564,618,619,622],{},[546,620,621],{},"Web API compatibility"," — fetch, WebSocket, Buffer built-in",[564,624,625,628],{},[546,626,627],{},"Native Node.js compatibility"," — Most npm packages work out of the box",[24,630,632],{"type":631},"info",[20,633,634],{},"Bun's startup time is 4-6x faster than Node.js, and it can handle significantly more requests per second in I\u002FO-heavy workloads.",[72,636],{},[31,638,640],{"id":639},"performance-benchmarks","Performance Benchmarks",[20,642,643],{},"Let's look at real-world performance comparisons:",[645,646,647,665],"table",{},[648,649,650],"thead",{},[651,652,653,657,660,662],"tr",{},[654,655,656],"th",{},"Metric",[654,658,659],{},"Node.js",[654,661,548],{},[654,663,664],{},"Improvement",[666,667,668,685,701,717],"tbody",{},[651,669,670,674,677,680],{},[671,672,673],"td",{},"Startup time",[671,675,676],{},"45ms",[671,678,679],{},"8ms",[671,681,682],{},[546,683,684],{},"5.6x faster",[651,686,687,690,693,696],{},[671,688,689],{},"HTTP requests\u002Fsec",[671,691,692],{},"12,400",[671,694,695],{},"48,200",[671,697,698],{},[546,699,700],{},"3.9x faster",[651,702,703,706,709,712],{},[671,704,705],{},"TypeScript execution",[671,707,708],{},"180ms",[671,710,711],{},"12ms",[671,713,714],{},[546,715,716],{},"15x faster",[651,718,719,722,725,728],{},[671,720,721],{},"Memory usage",[671,723,724],{},"120MB",[671,726,727],{},"85MB",[671,729,730],{},[546,731,732],{},"29% less",[20,734,735],{},"These aren't synthetic benchmarks—they're representative of real API workloads.",[161,737,740],{"icon":738,"title":739},"📊","Real Application Performance",[20,741,742],{},"In our BrewStop API tests, switching from Node.js to Bun reduced cold start times from 2.1s to 340ms—an 85% improvement.",[72,744],{},[15,746,748],{"id":747},"main-content","Main Content",[31,750,752],{"id":751},"step-1-install-bun","Step 1: Install Bun",[20,754,755],{},"If you haven't installed Bun yet, it's a single command:",[47,757,762],{"className":758,"code":759,"filename":760,"language":761,"meta":55,"style":55},"language-bash shiki shiki-themes github-light github-dark","# macOS, Linux, and WSL\ncurl -fsSL https:\u002F\u002Fbun.sh\u002Finstall | bash\n\n# Windows (PowerShell)\nwinget install oven-sh.bun\n","terminal","bash",[39,763,764,770,791,796,801],{"__ignoreMap":55},[250,765,766],{"class":252,"line":253},[250,767,769],{"class":768},"sJ8bj","# macOS, Linux, and WSL\n",[250,771,772,776,780,784,788],{"class":252,"line":113},[250,773,775],{"class":774},"sScJk","curl",[250,777,779],{"class":778},"sj4cs"," -fsSL",[250,781,783],{"class":782},"sZZnC"," https:\u002F\u002Fbun.sh\u002Finstall",[250,785,787],{"class":786},"szBVR"," |",[250,789,790],{"class":774}," bash\n",[250,792,793],{"class":252,"line":110},[250,794,795],{"emptyLinePlaceholder":129},"\n",[250,797,798],{"class":252,"line":269},[250,799,800],{"class":768},"# Windows (PowerShell)\n",[250,802,803,806,809],{"class":252,"line":275},[250,804,805],{"class":774},"winget",[250,807,808],{"class":782}," install",[250,810,811],{"class":782}," oven-sh.bun\n",[20,813,814],{},"Verify installation:",[47,816,818],{"className":758,"code":817,"filename":760,"language":761,"meta":55,"style":55},"bun --version\n# Should output: 1.2.x or higher\n",[39,819,820,828],{"__ignoreMap":55},[250,821,822,825],{"class":252,"line":253},[250,823,824],{"class":774},"bun",[250,826,827],{"class":778}," --version\n",[250,829,830],{"class":252,"line":113},[250,831,832],{"class":768},"# Should output: 1.2.x or higher\n",[72,834],{},[31,836,838],{"id":837},"step-2-create-a-bun-nitro-project","Step 2: Create a Bun + Nitro Project",[20,840,841],{},"The easiest way to start is with Nuxt, which has built-in Nitro support:",[47,843,845],{"className":758,"code":844,"filename":760,"language":761,"meta":55,"style":55},"# Create a new Nuxt project (uses Nitro internally)\nbunx nuxi@latest init brewstop-bun\n\ncd brewstop-bun\n",[39,846,847,852,866,870],{"__ignoreMap":55},[250,848,849],{"class":252,"line":253},[250,850,851],{"class":768},"# Create a new Nuxt project (uses Nitro internally)\n",[250,853,854,857,860,863],{"class":252,"line":113},[250,855,856],{"class":774},"bunx",[250,858,859],{"class":782}," nuxi@latest",[250,861,862],{"class":782}," init",[250,864,865],{"class":782}," brewstop-bun\n",[250,867,868],{"class":252,"line":110},[250,869,795],{"emptyLinePlaceholder":129},[250,871,872,875],{"class":252,"line":269},[250,873,874],{"class":778},"cd",[250,876,865],{"class":782},[24,878,879],{"type":26},[20,880,881],{},"Bun's package manager (bun install) is significantly faster than npm\u002Fyarn\u002Fpnpm. Use it for the best experience.",[20,883,884],{},"Install dependencies with Bun:",[47,886,888],{"className":758,"code":887,"filename":760,"language":761,"meta":55,"style":55},"bun install\n",[39,889,890],{"__ignoreMap":55},[250,891,892,894],{"class":252,"line":253},[250,893,824],{"class":774},[250,895,896],{"class":782}," install\n",[20,898,899],{},"Update the package.json to use Bun as the package manager:",[47,901,906],{"className":902,"code":903,"filename":904,"language":905,"meta":55,"style":55},"language-json shiki shiki-themes github-light github-dark","{\n  \"packageManager\": \"bun@1.2.0\",\n  \"scripts\": {\n    \"dev\": \"bunx nuxi dev\",\n    \"build\": \"bunx nuxi build\",\n    \"preview\": \"bunx nuxi preview\",\n    \"start\": \"bunx nuxi start\"\n  }\n}\n","package.json","json",[39,907,908,914,928,936,948,960,972,982,987],{"__ignoreMap":55},[250,909,910],{"class":252,"line":253},[250,911,913],{"class":912},"sVt8B","{\n",[250,915,916,919,922,925],{"class":252,"line":113},[250,917,918],{"class":778},"  \"packageManager\"",[250,920,921],{"class":912},": ",[250,923,924],{"class":782},"\"bun@1.2.0\"",[250,926,927],{"class":912},",\n",[250,929,930,933],{"class":252,"line":110},[250,931,932],{"class":778},"  \"scripts\"",[250,934,935],{"class":912},": {\n",[250,937,938,941,943,946],{"class":252,"line":269},[250,939,940],{"class":778},"    \"dev\"",[250,942,921],{"class":912},[250,944,945],{"class":782},"\"bunx nuxi dev\"",[250,947,927],{"class":912},[250,949,950,953,955,958],{"class":252,"line":275},[250,951,952],{"class":778},"    \"build\"",[250,954,921],{"class":912},[250,956,957],{"class":782},"\"bunx nuxi build\"",[250,959,927],{"class":912},[250,961,962,965,967,970],{"class":252,"line":281},[250,963,964],{"class":778},"    \"preview\"",[250,966,921],{"class":912},[250,968,969],{"class":782},"\"bunx nuxi preview\"",[250,971,927],{"class":912},[250,973,974,977,979],{"class":252,"line":287},[250,975,976],{"class":778},"    \"start\"",[250,978,921],{"class":912},[250,980,981],{"class":782},"\"bunx nuxi start\"\n",[250,983,984],{"class":252,"line":293},[250,985,986],{"class":912},"  }\n",[250,988,989],{"class":252,"line":299},[250,990,991],{"class":912},"}\n",[72,993],{},[31,995,997],{"id":996},"step-3-configure-nitro-to-use-bun","Step 3: Configure Nitro to Use Bun",[20,999,1000],{},"Nuxt automatically detects Bun when it's available. However, let's explicitly configure it for clarity.",[20,1002,1003,1004,1007],{},"Update ",[39,1005,1006],{},"nuxt.config.ts",":",[47,1009,1013],{"className":1010,"code":1011,"filename":1006,"language":1012,"meta":55,"style":55},"language-ts shiki shiki-themes github-light github-dark","export default defineNuxtConfig({\n  nitro: {\n    preset: \"bun\",\n  },\n  \n  devtools: {\n    enabled: true,\n  },\n});\n","ts",[39,1014,1015,1029,1034,1044,1049,1054,1059,1069,1073],{"__ignoreMap":55},[250,1016,1017,1020,1023,1026],{"class":252,"line":253},[250,1018,1019],{"class":786},"export",[250,1021,1022],{"class":786}," default",[250,1024,1025],{"class":774}," defineNuxtConfig",[250,1027,1028],{"class":912},"({\n",[250,1030,1031],{"class":252,"line":113},[250,1032,1033],{"class":912},"  nitro: {\n",[250,1035,1036,1039,1042],{"class":252,"line":110},[250,1037,1038],{"class":912},"    preset: ",[250,1040,1041],{"class":782},"\"bun\"",[250,1043,927],{"class":912},[250,1045,1046],{"class":252,"line":269},[250,1047,1048],{"class":912},"  },\n",[250,1050,1051],{"class":252,"line":275},[250,1052,1053],{"class":912},"  \n",[250,1055,1056],{"class":252,"line":281},[250,1057,1058],{"class":912},"  devtools: {\n",[250,1060,1061,1064,1067],{"class":252,"line":287},[250,1062,1063],{"class":912},"    enabled: ",[250,1065,1066],{"class":778},"true",[250,1068,927],{"class":912},[250,1070,1071],{"class":252,"line":293},[250,1072,1048],{"class":912},[250,1074,1075],{"class":252,"line":299},[250,1076,1077],{"class":912},"});\n",[20,1079,1080],{},"This ensures Nitro uses Bun's optimized runtime for both development and production.",[72,1082],{},[31,1084,1086],{"id":1085},"step-4-create-api-endpoints","Step 4: Create API Endpoints",[20,1088,1089],{},"Let's build a simple API to test Bun's performance.",[20,1091,1092,1093,1007],{},"Create ",[39,1094,1095],{},"server\u002Fapi\u002Fping.get.ts",[47,1097,1099],{"className":1010,"code":1098,"filename":1095,"language":1012,"meta":55,"style":55},"export default defineEventHandler(() => {\n  return {\n    message: \"Pong from Bun!\",\n    runtime: \"Bun\",\n    timestamp: Date.now(),\n  };\n});\n",[39,1100,1101,1119,1126,1136,1146,1157,1162],{"__ignoreMap":55},[250,1102,1103,1105,1107,1110,1113,1116],{"class":252,"line":253},[250,1104,1019],{"class":786},[250,1106,1022],{"class":786},[250,1108,1109],{"class":774}," defineEventHandler",[250,1111,1112],{"class":912},"(() ",[250,1114,1115],{"class":786},"=>",[250,1117,1118],{"class":912}," {\n",[250,1120,1121,1124],{"class":252,"line":113},[250,1122,1123],{"class":786},"  return",[250,1125,1118],{"class":912},[250,1127,1128,1131,1134],{"class":252,"line":110},[250,1129,1130],{"class":912},"    message: ",[250,1132,1133],{"class":782},"\"Pong from Bun!\"",[250,1135,927],{"class":912},[250,1137,1138,1141,1144],{"class":252,"line":269},[250,1139,1140],{"class":912},"    runtime: ",[250,1142,1143],{"class":782},"\"Bun\"",[250,1145,927],{"class":912},[250,1147,1148,1151,1154],{"class":252,"line":275},[250,1149,1150],{"class":912},"    timestamp: Date.",[250,1152,1153],{"class":774},"now",[250,1155,1156],{"class":912},"(),\n",[250,1158,1159],{"class":252,"line":281},[250,1160,1161],{"class":912},"  };\n",[250,1163,1164],{"class":252,"line":287},[250,1165,1077],{"class":912},[20,1167,1092,1168,1171],{},[39,1169,1170],{},"server\u002Fapi\u002Fproducts.get.ts"," with some data:",[47,1173,1175],{"className":1010,"code":1174,"filename":1170,"language":1012,"meta":55,"style":55},"const products = [\n  { id: 1, name: \"Latte\", price: 4.5, category: \"coffee\" },\n  { id: 2, name: \"Espresso\", price: 3.0, category: \"coffee\" },\n  { id: 3, name: \"Croissant\", price: 3.5, category: \"food\" },\n  { id: 4, name: \"Chai Tea\", price: 4.0, category: \"tea\" },\n  { id: 5, name: \"Muffin\", price: 3.0, category: \"food\" },\n];\n\nexport default defineEventHandler(() => {\n  return { products };\n});\n",[39,1176,1177,1191,1220,1243,1267,1291,1313,1318,1322,1336,1343],{"__ignoreMap":55},[250,1178,1179,1182,1185,1188],{"class":252,"line":253},[250,1180,1181],{"class":786},"const",[250,1183,1184],{"class":778}," products",[250,1186,1187],{"class":786}," =",[250,1189,1190],{"class":912}," [\n",[250,1192,1193,1196,1199,1202,1205,1208,1211,1214,1217],{"class":252,"line":113},[250,1194,1195],{"class":912},"  { id: ",[250,1197,1198],{"class":778},"1",[250,1200,1201],{"class":912},", name: ",[250,1203,1204],{"class":782},"\"Latte\"",[250,1206,1207],{"class":912},", price: ",[250,1209,1210],{"class":778},"4.5",[250,1212,1213],{"class":912},", category: ",[250,1215,1216],{"class":782},"\"coffee\"",[250,1218,1219],{"class":912}," },\n",[250,1221,1222,1224,1227,1229,1232,1234,1237,1239,1241],{"class":252,"line":110},[250,1223,1195],{"class":912},[250,1225,1226],{"class":778},"2",[250,1228,1201],{"class":912},[250,1230,1231],{"class":782},"\"Espresso\"",[250,1233,1207],{"class":912},[250,1235,1236],{"class":778},"3.0",[250,1238,1213],{"class":912},[250,1240,1216],{"class":782},[250,1242,1219],{"class":912},[250,1244,1245,1247,1250,1252,1255,1257,1260,1262,1265],{"class":252,"line":269},[250,1246,1195],{"class":912},[250,1248,1249],{"class":778},"3",[250,1251,1201],{"class":912},[250,1253,1254],{"class":782},"\"Croissant\"",[250,1256,1207],{"class":912},[250,1258,1259],{"class":778},"3.5",[250,1261,1213],{"class":912},[250,1263,1264],{"class":782},"\"food\"",[250,1266,1219],{"class":912},[250,1268,1269,1271,1274,1276,1279,1281,1284,1286,1289],{"class":252,"line":275},[250,1270,1195],{"class":912},[250,1272,1273],{"class":778},"4",[250,1275,1201],{"class":912},[250,1277,1278],{"class":782},"\"Chai Tea\"",[250,1280,1207],{"class":912},[250,1282,1283],{"class":778},"4.0",[250,1285,1213],{"class":912},[250,1287,1288],{"class":782},"\"tea\"",[250,1290,1219],{"class":912},[250,1292,1293,1295,1298,1300,1303,1305,1307,1309,1311],{"class":252,"line":281},[250,1294,1195],{"class":912},[250,1296,1297],{"class":778},"5",[250,1299,1201],{"class":912},[250,1301,1302],{"class":782},"\"Muffin\"",[250,1304,1207],{"class":912},[250,1306,1236],{"class":778},[250,1308,1213],{"class":912},[250,1310,1264],{"class":782},[250,1312,1219],{"class":912},[250,1314,1315],{"class":252,"line":287},[250,1316,1317],{"class":912},"];\n",[250,1319,1320],{"class":252,"line":293},[250,1321,795],{"emptyLinePlaceholder":129},[250,1323,1324,1326,1328,1330,1332,1334],{"class":252,"line":299},[250,1325,1019],{"class":786},[250,1327,1022],{"class":786},[250,1329,1109],{"class":774},[250,1331,1112],{"class":912},[250,1333,1115],{"class":786},[250,1335,1118],{"class":912},[250,1337,1338,1340],{"class":252,"line":132},[250,1339,1123],{"class":786},[250,1341,1342],{"class":912}," { products };\n",[250,1344,1345],{"class":252,"line":310},[250,1346,1077],{"class":912},[20,1348,1349],{},"Create a more complex endpoint with database simulation:",[47,1351,1354],{"className":1010,"code":1352,"filename":1353,"language":1012,"meta":55,"style":55},"interface OrderItem {\n  productId: number;\n  quantity: number;\n}\n\nconst orders: any[] = [];\n\nexport default defineEventHandler(async (event) => {\n  const body = await readBody(event) as OrderItem[];\n  \n  if (!body || body.length === 0) {\n    throw createError({\n      statusCode: 400,\n      statusMessage: \"Order must contain at least one item\",\n    });\n  }\n  \n  \u002F\u002F Simulate database delay\n  await new Promise((resolve) => setTimeout(resolve, 100));\n  \n  const order = {\n    id: crypto.randomUUID(),\n    items: body,\n    status: \"pending\",\n    createdAt: new Date().toISOString(),\n  };\n  \n  orders.push(order);\n  \n  return order;\n});\n","server\u002Fapi\u002Forders.post.ts",[39,1355,1356,1366,1380,1391,1395,1399,1420,1424,1451,1478,1482,1513,1523,1533,1543,1548,1552,1556,1561,1594,1598,1609,1619,1624,1634,1653,1657,1661,1672,1676,1683],{"__ignoreMap":55},[250,1357,1358,1361,1364],{"class":252,"line":253},[250,1359,1360],{"class":786},"interface",[250,1362,1363],{"class":774}," OrderItem",[250,1365,1118],{"class":912},[250,1367,1368,1372,1374,1377],{"class":252,"line":113},[250,1369,1371],{"class":1370},"s4XuR","  productId",[250,1373,1007],{"class":786},[250,1375,1376],{"class":778}," number",[250,1378,1379],{"class":912},";\n",[250,1381,1382,1385,1387,1389],{"class":252,"line":110},[250,1383,1384],{"class":1370},"  quantity",[250,1386,1007],{"class":786},[250,1388,1376],{"class":778},[250,1390,1379],{"class":912},[250,1392,1393],{"class":252,"line":269},[250,1394,991],{"class":912},[250,1396,1397],{"class":252,"line":275},[250,1398,795],{"emptyLinePlaceholder":129},[250,1400,1401,1403,1406,1408,1411,1414,1417],{"class":252,"line":281},[250,1402,1181],{"class":786},[250,1404,1405],{"class":778}," orders",[250,1407,1007],{"class":786},[250,1409,1410],{"class":778}," any",[250,1412,1413],{"class":912},"[] ",[250,1415,1416],{"class":786},"=",[250,1418,1419],{"class":912}," [];\n",[250,1421,1422],{"class":252,"line":287},[250,1423,795],{"emptyLinePlaceholder":129},[250,1425,1426,1428,1430,1432,1435,1438,1441,1444,1447,1449],{"class":252,"line":293},[250,1427,1019],{"class":786},[250,1429,1022],{"class":786},[250,1431,1109],{"class":774},[250,1433,1434],{"class":912},"(",[250,1436,1437],{"class":786},"async",[250,1439,1440],{"class":912}," (",[250,1442,1443],{"class":1370},"event",[250,1445,1446],{"class":912},") ",[250,1448,1115],{"class":786},[250,1450,1118],{"class":912},[250,1452,1453,1456,1459,1461,1464,1467,1470,1473,1475],{"class":252,"line":299},[250,1454,1455],{"class":786},"  const",[250,1457,1458],{"class":778}," body",[250,1460,1187],{"class":786},[250,1462,1463],{"class":786}," await",[250,1465,1466],{"class":774}," readBody",[250,1468,1469],{"class":912},"(event) ",[250,1471,1472],{"class":786},"as",[250,1474,1363],{"class":774},[250,1476,1477],{"class":912},"[];\n",[250,1479,1480],{"class":252,"line":132},[250,1481,1053],{"class":912},[250,1483,1484,1487,1489,1492,1495,1498,1501,1504,1507,1510],{"class":252,"line":310},[250,1485,1486],{"class":786},"  if",[250,1488,1440],{"class":912},[250,1490,1491],{"class":786},"!",[250,1493,1494],{"class":912},"body ",[250,1496,1497],{"class":786},"||",[250,1499,1500],{"class":912}," body.",[250,1502,1503],{"class":778},"length",[250,1505,1506],{"class":786}," ===",[250,1508,1509],{"class":778}," 0",[250,1511,1512],{"class":912},") {\n",[250,1514,1515,1518,1521],{"class":252,"line":316},[250,1516,1517],{"class":786},"    throw",[250,1519,1520],{"class":774}," createError",[250,1522,1028],{"class":912},[250,1524,1525,1528,1531],{"class":252,"line":322},[250,1526,1527],{"class":912},"      statusCode: ",[250,1529,1530],{"class":778},"400",[250,1532,927],{"class":912},[250,1534,1535,1538,1541],{"class":252,"line":328},[250,1536,1537],{"class":912},"      statusMessage: ",[250,1539,1540],{"class":782},"\"Order must contain at least one item\"",[250,1542,927],{"class":912},[250,1544,1545],{"class":252,"line":334},[250,1546,1547],{"class":912},"    });\n",[250,1549,1550],{"class":252,"line":340},[250,1551,986],{"class":912},[250,1553,1554],{"class":252,"line":346},[250,1555,1053],{"class":912},[250,1557,1558],{"class":252,"line":352},[250,1559,1560],{"class":768},"  \u002F\u002F Simulate database delay\n",[250,1562,1563,1566,1569,1572,1575,1578,1580,1582,1585,1588,1591],{"class":252,"line":358},[250,1564,1565],{"class":786},"  await",[250,1567,1568],{"class":786}," new",[250,1570,1571],{"class":778}," Promise",[250,1573,1574],{"class":912},"((",[250,1576,1577],{"class":1370},"resolve",[250,1579,1446],{"class":912},[250,1581,1115],{"class":786},[250,1583,1584],{"class":774}," setTimeout",[250,1586,1587],{"class":912},"(resolve, ",[250,1589,1590],{"class":778},"100",[250,1592,1593],{"class":912},"));\n",[250,1595,1596],{"class":252,"line":364},[250,1597,1053],{"class":912},[250,1599,1600,1602,1605,1607],{"class":252,"line":370},[250,1601,1455],{"class":786},[250,1603,1604],{"class":778}," order",[250,1606,1187],{"class":786},[250,1608,1118],{"class":912},[250,1610,1611,1614,1617],{"class":252,"line":376},[250,1612,1613],{"class":912},"    id: crypto.",[250,1615,1616],{"class":774},"randomUUID",[250,1618,1156],{"class":912},[250,1620,1621],{"class":252,"line":382},[250,1622,1623],{"class":912},"    items: body,\n",[250,1625,1626,1629,1632],{"class":252,"line":388},[250,1627,1628],{"class":912},"    status: ",[250,1630,1631],{"class":782},"\"pending\"",[250,1633,927],{"class":912},[250,1635,1636,1639,1642,1645,1648,1651],{"class":252,"line":393},[250,1637,1638],{"class":912},"    createdAt: ",[250,1640,1641],{"class":786},"new",[250,1643,1644],{"class":774}," Date",[250,1646,1647],{"class":912},"().",[250,1649,1650],{"class":774},"toISOString",[250,1652,1156],{"class":912},[250,1654,1655],{"class":252,"line":399},[250,1656,1161],{"class":912},[250,1658,1659],{"class":252,"line":405},[250,1660,1053],{"class":912},[250,1662,1663,1666,1669],{"class":252,"line":410},[250,1664,1665],{"class":912},"  orders.",[250,1667,1668],{"class":774},"push",[250,1670,1671],{"class":912},"(order);\n",[250,1673,1674],{"class":252,"line":415},[250,1675,1053],{"class":912},[250,1677,1678,1680],{"class":252,"line":420},[250,1679,1123],{"class":786},[250,1681,1682],{"class":912}," order;\n",[250,1684,1685],{"class":252,"line":426},[250,1686,1077],{"class":912},[72,1688],{},[31,1690,1692],{"id":1691},"step-5-run-the-server","Step 5: Run the Server",[20,1694,1695],{},"Start the development server:",[47,1697,1699],{"className":758,"code":1698,"filename":760,"language":761,"meta":55,"style":55},"bun run dev\n",[39,1700,1701],{"__ignoreMap":55},[250,1702,1703,1705,1708],{"class":252,"line":253},[250,1704,824],{"class":774},[250,1706,1707],{"class":782}," run",[250,1709,1710],{"class":782}," dev\n",[161,1712,1715],{"icon":1713,"title":1714},"⚡","Notice the Speed",[20,1716,1717],{},"Bun's dev server starts in milliseconds—often before you can release the keys after typing the command.",[20,1719,1720],{},"Test the endpoints:",[47,1722,1724],{"className":758,"code":1723,"filename":760,"language":761,"meta":55,"style":55},"curl http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fping\ncurl http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fproducts\n",[39,1725,1726,1733],{"__ignoreMap":55},[250,1727,1728,1730],{"class":252,"line":253},[250,1729,775],{"class":774},[250,1731,1732],{"class":782}," http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fping\n",[250,1734,1735,1737],{"class":252,"line":113},[250,1736,775],{"class":774},[250,1738,1739],{"class":782}," http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fproducts\n",[72,1741],{},[31,1743,1745],{"id":1744},"step-6-benchmarking","Step 6: Benchmarking",[20,1747,1748],{},"Let's create a simple benchmark script to compare Bun vs Node.js performance.",[20,1750,1092,1751,1007],{},[39,1752,1753],{},"benchmark.mjs",[47,1755,1757],{"className":1010,"code":1756,"filename":1753,"language":1012,"meta":55,"style":55},"import http from \"http\";\n\nconst HOST = \"localhost\";\nconst PORT = 3000;\nconst REQUESTS = 10000;\nconst CONCURRENCY = 100;\n\nasync function benchmark() {\n  console.log(`Running benchmark: ${REQUESTS} requests with ${CONCURRENCY} concurrency\\n`);\n  \n  const start = Date.now();\n  let completed = 0;\n  \n  const promises = [];\n  \n  for (let i = 0; i \u003C CONCURRENCY; i++) {\n    promises.push(\n      new Promise((resolve) => {\n        const makeRequest = async () => {\n          if (completed >= REQUESTS) {\n            resolve(true);\n            return;\n          }\n          \n          try {\n            await fetch(`http:\u002F\u002F${HOST}:${PORT}\u002Fapi\u002Fproducts`);\n            completed++;\n            \n            if (completed \u003C REQUESTS) {\n              makeRequest();\n            } else {\n              resolve(true);\n            }\n          } catch (e) {\n            resolve(true);\n          }\n        };\n        \n        makeRequest();\n      })\n    );\n  }\n  \n  await Promise.all(promises);\n  \n  const duration = Date.now() - start;\n  const rps = Math.round(REQUESTS \u002F (duration \u002F 1000));\n  \n  console.log(`Results:`);\n  console.log(`  Total time: ${duration}ms`);\n  console.log(`  Requests\u002Fsec: ${rps}`);\n  console.log(`  Avg latency: ${(duration \u002F REQUESTS).toFixed(2)}ms`);\n}\n\nbenchmark();\n",[39,1758,1759,1775,1779,1793,1807,1821,1835,1839,1852,1886,1890,1907,1921,1925,1936,1940,1973,1983,2000,2020,2035,2046,2053,2058,2063,2070,2097,2106,2111,2124,2131,2141,2152,2157,2168,2178,2182,2187,2192,2199,2205,2211,2216,2221,2237,2242,2265,2299,2304,2318,2338,2358,2395,2400,2405],{"__ignoreMap":55},[250,1760,1761,1764,1767,1770,1773],{"class":252,"line":253},[250,1762,1763],{"class":786},"import",[250,1765,1766],{"class":912}," http ",[250,1768,1769],{"class":786},"from",[250,1771,1772],{"class":782}," \"http\"",[250,1774,1379],{"class":912},[250,1776,1777],{"class":252,"line":113},[250,1778,795],{"emptyLinePlaceholder":129},[250,1780,1781,1783,1786,1788,1791],{"class":252,"line":110},[250,1782,1181],{"class":786},[250,1784,1785],{"class":778}," HOST",[250,1787,1187],{"class":786},[250,1789,1790],{"class":782}," \"localhost\"",[250,1792,1379],{"class":912},[250,1794,1795,1797,1800,1802,1805],{"class":252,"line":269},[250,1796,1181],{"class":786},[250,1798,1799],{"class":778}," PORT",[250,1801,1187],{"class":786},[250,1803,1804],{"class":778}," 3000",[250,1806,1379],{"class":912},[250,1808,1809,1811,1814,1816,1819],{"class":252,"line":275},[250,1810,1181],{"class":786},[250,1812,1813],{"class":778}," REQUESTS",[250,1815,1187],{"class":786},[250,1817,1818],{"class":778}," 10000",[250,1820,1379],{"class":912},[250,1822,1823,1825,1828,1830,1833],{"class":252,"line":281},[250,1824,1181],{"class":786},[250,1826,1827],{"class":778}," CONCURRENCY",[250,1829,1187],{"class":786},[250,1831,1832],{"class":778}," 100",[250,1834,1379],{"class":912},[250,1836,1837],{"class":252,"line":287},[250,1838,795],{"emptyLinePlaceholder":129},[250,1840,1841,1843,1846,1849],{"class":252,"line":293},[250,1842,1437],{"class":786},[250,1844,1845],{"class":786}," function",[250,1847,1848],{"class":774}," benchmark",[250,1850,1851],{"class":912},"() {\n",[250,1853,1854,1857,1860,1862,1865,1868,1871,1874,1877,1880,1883],{"class":252,"line":299},[250,1855,1856],{"class":912},"  console.",[250,1858,1859],{"class":774},"log",[250,1861,1434],{"class":912},[250,1863,1864],{"class":782},"`Running benchmark: ${",[250,1866,1867],{"class":778},"REQUESTS",[250,1869,1870],{"class":782},"} requests with ${",[250,1872,1873],{"class":778},"CONCURRENCY",[250,1875,1876],{"class":782},"} concurrency",[250,1878,1879],{"class":778},"\\n",[250,1881,1882],{"class":782},"`",[250,1884,1885],{"class":912},");\n",[250,1887,1888],{"class":252,"line":132},[250,1889,1053],{"class":912},[250,1891,1892,1894,1897,1899,1902,1904],{"class":252,"line":310},[250,1893,1455],{"class":786},[250,1895,1896],{"class":778}," start",[250,1898,1187],{"class":786},[250,1900,1901],{"class":912}," Date.",[250,1903,1153],{"class":774},[250,1905,1906],{"class":912},"();\n",[250,1908,1909,1912,1915,1917,1919],{"class":252,"line":316},[250,1910,1911],{"class":786},"  let",[250,1913,1914],{"class":912}," completed ",[250,1916,1416],{"class":786},[250,1918,1509],{"class":778},[250,1920,1379],{"class":912},[250,1922,1923],{"class":252,"line":322},[250,1924,1053],{"class":912},[250,1926,1927,1929,1932,1934],{"class":252,"line":328},[250,1928,1455],{"class":786},[250,1930,1931],{"class":778}," promises",[250,1933,1187],{"class":786},[250,1935,1419],{"class":912},[250,1937,1938],{"class":252,"line":334},[250,1939,1053],{"class":912},[250,1941,1942,1945,1947,1950,1953,1955,1957,1960,1963,1965,1968,1971],{"class":252,"line":340},[250,1943,1944],{"class":786},"  for",[250,1946,1440],{"class":912},[250,1948,1949],{"class":786},"let",[250,1951,1952],{"class":912}," i ",[250,1954,1416],{"class":786},[250,1956,1509],{"class":778},[250,1958,1959],{"class":912},"; i ",[250,1961,1962],{"class":786},"\u003C",[250,1964,1827],{"class":778},[250,1966,1967],{"class":912},"; i",[250,1969,1970],{"class":786},"++",[250,1972,1512],{"class":912},[250,1974,1975,1978,1980],{"class":252,"line":346},[250,1976,1977],{"class":912},"    promises.",[250,1979,1668],{"class":774},[250,1981,1982],{"class":912},"(\n",[250,1984,1985,1988,1990,1992,1994,1996,1998],{"class":252,"line":352},[250,1986,1987],{"class":786},"      new",[250,1989,1571],{"class":778},[250,1991,1574],{"class":912},[250,1993,1577],{"class":1370},[250,1995,1446],{"class":912},[250,1997,1115],{"class":786},[250,1999,1118],{"class":912},[250,2001,2002,2005,2008,2010,2013,2016,2018],{"class":252,"line":358},[250,2003,2004],{"class":786},"        const",[250,2006,2007],{"class":774}," makeRequest",[250,2009,1187],{"class":786},[250,2011,2012],{"class":786}," async",[250,2014,2015],{"class":912}," () ",[250,2017,1115],{"class":786},[250,2019,1118],{"class":912},[250,2021,2022,2025,2028,2031,2033],{"class":252,"line":364},[250,2023,2024],{"class":786},"          if",[250,2026,2027],{"class":912}," (completed ",[250,2029,2030],{"class":786},">=",[250,2032,1813],{"class":778},[250,2034,1512],{"class":912},[250,2036,2037,2040,2042,2044],{"class":252,"line":370},[250,2038,2039],{"class":774},"            resolve",[250,2041,1434],{"class":912},[250,2043,1066],{"class":778},[250,2045,1885],{"class":912},[250,2047,2048,2051],{"class":252,"line":376},[250,2049,2050],{"class":786},"            return",[250,2052,1379],{"class":912},[250,2054,2055],{"class":252,"line":382},[250,2056,2057],{"class":912},"          }\n",[250,2059,2060],{"class":252,"line":388},[250,2061,2062],{"class":912},"          \n",[250,2064,2065,2068],{"class":252,"line":393},[250,2066,2067],{"class":786},"          try",[250,2069,1118],{"class":912},[250,2071,2072,2075,2078,2080,2083,2086,2089,2092,2095],{"class":252,"line":399},[250,2073,2074],{"class":786},"            await",[250,2076,2077],{"class":774}," fetch",[250,2079,1434],{"class":912},[250,2081,2082],{"class":782},"`http:\u002F\u002F${",[250,2084,2085],{"class":778},"HOST",[250,2087,2088],{"class":782},"}:${",[250,2090,2091],{"class":778},"PORT",[250,2093,2094],{"class":782},"}\u002Fapi\u002Fproducts`",[250,2096,1885],{"class":912},[250,2098,2099,2102,2104],{"class":252,"line":405},[250,2100,2101],{"class":912},"            completed",[250,2103,1970],{"class":786},[250,2105,1379],{"class":912},[250,2107,2108],{"class":252,"line":410},[250,2109,2110],{"class":912},"            \n",[250,2112,2113,2116,2118,2120,2122],{"class":252,"line":415},[250,2114,2115],{"class":786},"            if",[250,2117,2027],{"class":912},[250,2119,1962],{"class":786},[250,2121,1813],{"class":778},[250,2123,1512],{"class":912},[250,2125,2126,2129],{"class":252,"line":420},[250,2127,2128],{"class":774},"              makeRequest",[250,2130,1906],{"class":912},[250,2132,2133,2136,2139],{"class":252,"line":426},[250,2134,2135],{"class":912},"            } ",[250,2137,2138],{"class":786},"else",[250,2140,1118],{"class":912},[250,2142,2143,2146,2148,2150],{"class":252,"line":431},[250,2144,2145],{"class":774},"              resolve",[250,2147,1434],{"class":912},[250,2149,1066],{"class":778},[250,2151,1885],{"class":912},[250,2153,2154],{"class":252,"line":436},[250,2155,2156],{"class":912},"            }\n",[250,2158,2159,2162,2165],{"class":252,"line":442},[250,2160,2161],{"class":912},"          } ",[250,2163,2164],{"class":786},"catch",[250,2166,2167],{"class":912}," (e) {\n",[250,2169,2170,2172,2174,2176],{"class":252,"line":447},[250,2171,2039],{"class":774},[250,2173,1434],{"class":912},[250,2175,1066],{"class":778},[250,2177,1885],{"class":912},[250,2179,2180],{"class":252,"line":453},[250,2181,2057],{"class":912},[250,2183,2184],{"class":252,"line":459},[250,2185,2186],{"class":912},"        };\n",[250,2188,2189],{"class":252,"line":465},[250,2190,2191],{"class":912},"        \n",[250,2193,2194,2197],{"class":252,"line":471},[250,2195,2196],{"class":774},"        makeRequest",[250,2198,1906],{"class":912},[250,2200,2202],{"class":252,"line":2201},40,[250,2203,2204],{"class":912},"      })\n",[250,2206,2208],{"class":252,"line":2207},41,[250,2209,2210],{"class":912},"    );\n",[250,2212,2214],{"class":252,"line":2213},42,[250,2215,986],{"class":912},[250,2217,2219],{"class":252,"line":2218},43,[250,2220,1053],{"class":912},[250,2222,2224,2226,2228,2231,2234],{"class":252,"line":2223},44,[250,2225,1565],{"class":786},[250,2227,1571],{"class":778},[250,2229,2230],{"class":912},".",[250,2232,2233],{"class":774},"all",[250,2235,2236],{"class":912},"(promises);\n",[250,2238,2240],{"class":252,"line":2239},45,[250,2241,1053],{"class":912},[250,2243,2245,2247,2250,2252,2254,2256,2259,2262],{"class":252,"line":2244},46,[250,2246,1455],{"class":786},[250,2248,2249],{"class":778}," duration",[250,2251,1187],{"class":786},[250,2253,1901],{"class":912},[250,2255,1153],{"class":774},[250,2257,2258],{"class":912},"() ",[250,2260,2261],{"class":786},"-",[250,2263,2264],{"class":912}," start;\n",[250,2266,2268,2270,2273,2275,2278,2281,2283,2285,2288,2291,2294,2297],{"class":252,"line":2267},47,[250,2269,1455],{"class":786},[250,2271,2272],{"class":778}," rps",[250,2274,1187],{"class":786},[250,2276,2277],{"class":912}," Math.",[250,2279,2280],{"class":774},"round",[250,2282,1434],{"class":912},[250,2284,1867],{"class":778},[250,2286,2287],{"class":786}," \u002F",[250,2289,2290],{"class":912}," (duration ",[250,2292,2293],{"class":786},"\u002F",[250,2295,2296],{"class":778}," 1000",[250,2298,1593],{"class":912},[250,2300,2302],{"class":252,"line":2301},48,[250,2303,1053],{"class":912},[250,2305,2307,2309,2311,2313,2316],{"class":252,"line":2306},49,[250,2308,1856],{"class":912},[250,2310,1859],{"class":774},[250,2312,1434],{"class":912},[250,2314,2315],{"class":782},"`Results:`",[250,2317,1885],{"class":912},[250,2319,2321,2323,2325,2327,2330,2333,2336],{"class":252,"line":2320},50,[250,2322,1856],{"class":912},[250,2324,1859],{"class":774},[250,2326,1434],{"class":912},[250,2328,2329],{"class":782},"`  Total time: ${",[250,2331,2332],{"class":912},"duration",[250,2334,2335],{"class":782},"}ms`",[250,2337,1885],{"class":912},[250,2339,2341,2343,2345,2347,2350,2353,2356],{"class":252,"line":2340},51,[250,2342,1856],{"class":912},[250,2344,1859],{"class":774},[250,2346,1434],{"class":912},[250,2348,2349],{"class":782},"`  Requests\u002Fsec: ${",[250,2351,2352],{"class":912},"rps",[250,2354,2355],{"class":782},"}`",[250,2357,1885],{"class":912},[250,2359,2361,2363,2365,2367,2370,2372,2374,2376,2378,2381,2384,2386,2388,2391,2393],{"class":252,"line":2360},52,[250,2362,1856],{"class":912},[250,2364,1859],{"class":774},[250,2366,1434],{"class":912},[250,2368,2369],{"class":782},"`  Avg latency: ${",[250,2371,1434],{"class":782},[250,2373,2332],{"class":912},[250,2375,2287],{"class":786},[250,2377,1813],{"class":778},[250,2379,2380],{"class":782},").",[250,2382,2383],{"class":774},"toFixed",[250,2385,1434],{"class":782},[250,2387,1226],{"class":778},[250,2389,2390],{"class":782},")",[250,2392,2335],{"class":782},[250,2394,1885],{"class":912},[250,2396,2398],{"class":252,"line":2397},53,[250,2399,991],{"class":912},[250,2401,2403],{"class":252,"line":2402},54,[250,2404,795],{"emptyLinePlaceholder":129},[250,2406,2408,2411],{"class":252,"line":2407},55,[250,2409,2410],{"class":774},"benchmark",[250,2412,1906],{"class":912},[20,2414,2415],{},"Run the benchmark:",[47,2417,2419],{"className":758,"code":2418,"filename":760,"language":761,"meta":55,"style":55},"# First, start the server in one terminal\nbun run dev\n\n# Then run the benchmark in another\nbun run benchmark.mjs\n",[39,2420,2421,2426,2434,2438,2443],{"__ignoreMap":55},[250,2422,2423],{"class":252,"line":253},[250,2424,2425],{"class":768},"# First, start the server in one terminal\n",[250,2427,2428,2430,2432],{"class":252,"line":113},[250,2429,824],{"class":774},[250,2431,1707],{"class":782},[250,2433,1710],{"class":782},[250,2435,2436],{"class":252,"line":110},[250,2437,795],{"emptyLinePlaceholder":129},[250,2439,2440],{"class":252,"line":269},[250,2441,2442],{"class":768},"# Then run the benchmark in another\n",[250,2444,2445,2447,2449],{"class":252,"line":275},[250,2446,824],{"class":774},[250,2448,1707],{"class":782},[250,2450,2451],{"class":782}," benchmark.mjs\n",[72,2453],{},[31,2455,2457],{"id":2456},"step-7-using-buns-native-features","Step 7: Using Bun's Native Features",[2459,2460,2462],"h3",{"id":2461},"typescript-direct-execution","TypeScript Direct Execution",[20,2464,2465],{},"Bun runs TypeScript natively—no ts-node, no compilation step needed:",[47,2467,2470],{"className":1010,"code":2468,"filename":2469,"language":1012,"meta":55,"style":55},"\u002F\u002F This runs directly in Bun—no transpilation!\ninterface Product {\n  id: number;\n  name: string;\n  price: number;\n}\n\nconst products: Product[] = [\n  { id: 1, name: \"Latte\", price: 4.5 },\n  { id: 2, name: \"Espresso\", price: 3.0 },\n];\n\nexport default defineEventHandler(() => {\n  return {\n    products,\n    runtime: Bun.version,\n    platform: Bun.environment.platform,\n  };\n});\n","server\u002Fapi\u002Fbun-features.get.ts",[39,2471,2472,2477,2486,2497,2509,2520,2524,2528,2544,2560,2576,2580,2584,2598,2604,2609,2614,2619,2623],{"__ignoreMap":55},[250,2473,2474],{"class":252,"line":253},[250,2475,2476],{"class":768},"\u002F\u002F This runs directly in Bun—no transpilation!\n",[250,2478,2479,2481,2484],{"class":252,"line":113},[250,2480,1360],{"class":786},[250,2482,2483],{"class":774}," Product",[250,2485,1118],{"class":912},[250,2487,2488,2491,2493,2495],{"class":252,"line":110},[250,2489,2490],{"class":1370},"  id",[250,2492,1007],{"class":786},[250,2494,1376],{"class":778},[250,2496,1379],{"class":912},[250,2498,2499,2502,2504,2507],{"class":252,"line":269},[250,2500,2501],{"class":1370},"  name",[250,2503,1007],{"class":786},[250,2505,2506],{"class":778}," string",[250,2508,1379],{"class":912},[250,2510,2511,2514,2516,2518],{"class":252,"line":275},[250,2512,2513],{"class":1370},"  price",[250,2515,1007],{"class":786},[250,2517,1376],{"class":778},[250,2519,1379],{"class":912},[250,2521,2522],{"class":252,"line":281},[250,2523,991],{"class":912},[250,2525,2526],{"class":252,"line":287},[250,2527,795],{"emptyLinePlaceholder":129},[250,2529,2530,2532,2534,2536,2538,2540,2542],{"class":252,"line":293},[250,2531,1181],{"class":786},[250,2533,1184],{"class":778},[250,2535,1007],{"class":786},[250,2537,2483],{"class":774},[250,2539,1413],{"class":912},[250,2541,1416],{"class":786},[250,2543,1190],{"class":912},[250,2545,2546,2548,2550,2552,2554,2556,2558],{"class":252,"line":299},[250,2547,1195],{"class":912},[250,2549,1198],{"class":778},[250,2551,1201],{"class":912},[250,2553,1204],{"class":782},[250,2555,1207],{"class":912},[250,2557,1210],{"class":778},[250,2559,1219],{"class":912},[250,2561,2562,2564,2566,2568,2570,2572,2574],{"class":252,"line":132},[250,2563,1195],{"class":912},[250,2565,1226],{"class":778},[250,2567,1201],{"class":912},[250,2569,1231],{"class":782},[250,2571,1207],{"class":912},[250,2573,1236],{"class":778},[250,2575,1219],{"class":912},[250,2577,2578],{"class":252,"line":310},[250,2579,1317],{"class":912},[250,2581,2582],{"class":252,"line":316},[250,2583,795],{"emptyLinePlaceholder":129},[250,2585,2586,2588,2590,2592,2594,2596],{"class":252,"line":322},[250,2587,1019],{"class":786},[250,2589,1022],{"class":786},[250,2591,1109],{"class":774},[250,2593,1112],{"class":912},[250,2595,1115],{"class":786},[250,2597,1118],{"class":912},[250,2599,2600,2602],{"class":252,"line":328},[250,2601,1123],{"class":786},[250,2603,1118],{"class":912},[250,2605,2606],{"class":252,"line":334},[250,2607,2608],{"class":912},"    products,\n",[250,2610,2611],{"class":252,"line":340},[250,2612,2613],{"class":912},"    runtime: Bun.version,\n",[250,2615,2616],{"class":252,"line":346},[250,2617,2618],{"class":912},"    platform: Bun.environment.platform,\n",[250,2620,2621],{"class":252,"line":352},[250,2622,1161],{"class":912},[250,2624,2625],{"class":252,"line":358},[250,2626,1077],{"class":912},[2459,2628,2630],{"id":2629},"using-bunfile-for-static-files","Using Bun.file for Static Files",[20,2632,2633],{},"Bun has built-in support for file operations:",[47,2635,2638],{"className":1010,"code":2636,"filename":2637,"language":1012,"meta":55,"style":55},"export default defineEventHandler(async (event) => {\n  const file = Bun.file(\".\u002Fserver\u002Fdata\u002Fproducts.json\");\n  const contents = await file.json();\n  \n  return contents;\n});\n","server\u002Fapi\u002Fread-file.get.ts",[39,2639,2640,2662,2684,2702,2706,2713],{"__ignoreMap":55},[250,2641,2642,2644,2646,2648,2650,2652,2654,2656,2658,2660],{"class":252,"line":253},[250,2643,1019],{"class":786},[250,2645,1022],{"class":786},[250,2647,1109],{"class":774},[250,2649,1434],{"class":912},[250,2651,1437],{"class":786},[250,2653,1440],{"class":912},[250,2655,1443],{"class":1370},[250,2657,1446],{"class":912},[250,2659,1115],{"class":786},[250,2661,1118],{"class":912},[250,2663,2664,2666,2669,2671,2674,2677,2679,2682],{"class":252,"line":113},[250,2665,1455],{"class":786},[250,2667,2668],{"class":778}," file",[250,2670,1187],{"class":786},[250,2672,2673],{"class":912}," Bun.",[250,2675,2676],{"class":774},"file",[250,2678,1434],{"class":912},[250,2680,2681],{"class":782},"\".\u002Fserver\u002Fdata\u002Fproducts.json\"",[250,2683,1885],{"class":912},[250,2685,2686,2688,2691,2693,2695,2698,2700],{"class":252,"line":110},[250,2687,1455],{"class":786},[250,2689,2690],{"class":778}," contents",[250,2692,1187],{"class":786},[250,2694,1463],{"class":786},[250,2696,2697],{"class":912}," file.",[250,2699,905],{"class":774},[250,2701,1906],{"class":912},[250,2703,2704],{"class":252,"line":269},[250,2705,1053],{"class":912},[250,2707,2708,2710],{"class":252,"line":275},[250,2709,1123],{"class":786},[250,2711,2712],{"class":912}," contents;\n",[250,2714,2715],{"class":252,"line":281},[250,2716,1077],{"class":912},[2459,2718,2720],{"id":2719},"parallel-data-fetching","Parallel Data Fetching",[20,2722,2723],{},"Bun's concurrent fetching is blazingly fast:",[47,2725,2728],{"className":1010,"code":2726,"filename":2727,"language":1012,"meta":55,"style":55},"export default defineEventHandler(async () => {\n  const urls = [\n    \"https:\u002F\u002Fapi.github.com\u002Fusers\u002Fokinea\",\n    \"https:\u002F\u002Fapi.github.com\u002Fusers\u002Ffacebook\",\n    \"https:\u002F\u002Fapi.github.com\u002Fusers\u002Fnuxt\",\n  ];\n  \n  \u002F\u002F Fetch all URLs in parallel - Bun optimizes this natively\n  const responses = await Promise.all(\n    urls.map((url) => fetch(url).then((r) => r.json()))\n  );\n  \n  return {\n    users: responses.map((r) => r.login),\n    fetchedAt: new Date().toISOString(),\n  };\n});\n","server\u002Fapi\u002Fexternal.get.ts",[39,2729,2730,2748,2759,2766,2773,2780,2785,2789,2794,2813,2855,2860,2864,2870,2888,2903,2907],{"__ignoreMap":55},[250,2731,2732,2734,2736,2738,2740,2742,2744,2746],{"class":252,"line":253},[250,2733,1019],{"class":786},[250,2735,1022],{"class":786},[250,2737,1109],{"class":774},[250,2739,1434],{"class":912},[250,2741,1437],{"class":786},[250,2743,2015],{"class":912},[250,2745,1115],{"class":786},[250,2747,1118],{"class":912},[250,2749,2750,2752,2755,2757],{"class":252,"line":113},[250,2751,1455],{"class":786},[250,2753,2754],{"class":778}," urls",[250,2756,1187],{"class":786},[250,2758,1190],{"class":912},[250,2760,2761,2764],{"class":252,"line":110},[250,2762,2763],{"class":782},"    \"https:\u002F\u002Fapi.github.com\u002Fusers\u002Fokinea\"",[250,2765,927],{"class":912},[250,2767,2768,2771],{"class":252,"line":269},[250,2769,2770],{"class":782},"    \"https:\u002F\u002Fapi.github.com\u002Fusers\u002Ffacebook\"",[250,2772,927],{"class":912},[250,2774,2775,2778],{"class":252,"line":275},[250,2776,2777],{"class":782},"    \"https:\u002F\u002Fapi.github.com\u002Fusers\u002Fnuxt\"",[250,2779,927],{"class":912},[250,2781,2782],{"class":252,"line":281},[250,2783,2784],{"class":912},"  ];\n",[250,2786,2787],{"class":252,"line":287},[250,2788,1053],{"class":912},[250,2790,2791],{"class":252,"line":293},[250,2792,2793],{"class":768},"  \u002F\u002F Fetch all URLs in parallel - Bun optimizes this natively\n",[250,2795,2796,2798,2801,2803,2805,2807,2809,2811],{"class":252,"line":299},[250,2797,1455],{"class":786},[250,2799,2800],{"class":778}," responses",[250,2802,1187],{"class":786},[250,2804,1463],{"class":786},[250,2806,1571],{"class":778},[250,2808,2230],{"class":912},[250,2810,2233],{"class":774},[250,2812,1982],{"class":912},[250,2814,2815,2818,2821,2823,2826,2828,2830,2832,2835,2838,2840,2843,2845,2847,2850,2852],{"class":252,"line":132},[250,2816,2817],{"class":912},"    urls.",[250,2819,2820],{"class":774},"map",[250,2822,1574],{"class":912},[250,2824,2825],{"class":1370},"url",[250,2827,1446],{"class":912},[250,2829,1115],{"class":786},[250,2831,2077],{"class":774},[250,2833,2834],{"class":912},"(url).",[250,2836,2837],{"class":774},"then",[250,2839,1574],{"class":912},[250,2841,2842],{"class":1370},"r",[250,2844,1446],{"class":912},[250,2846,1115],{"class":786},[250,2848,2849],{"class":912}," r.",[250,2851,905],{"class":774},[250,2853,2854],{"class":912},"()))\n",[250,2856,2857],{"class":252,"line":310},[250,2858,2859],{"class":912},"  );\n",[250,2861,2862],{"class":252,"line":316},[250,2863,1053],{"class":912},[250,2865,2866,2868],{"class":252,"line":322},[250,2867,1123],{"class":786},[250,2869,1118],{"class":912},[250,2871,2872,2875,2877,2879,2881,2883,2885],{"class":252,"line":328},[250,2873,2874],{"class":912},"    users: responses.",[250,2876,2820],{"class":774},[250,2878,1574],{"class":912},[250,2880,2842],{"class":1370},[250,2882,1446],{"class":912},[250,2884,1115],{"class":786},[250,2886,2887],{"class":912}," r.login),\n",[250,2889,2890,2893,2895,2897,2899,2901],{"class":252,"line":334},[250,2891,2892],{"class":912},"    fetchedAt: ",[250,2894,1641],{"class":786},[250,2896,1644],{"class":774},[250,2898,1647],{"class":912},[250,2900,1650],{"class":774},[250,2902,1156],{"class":912},[250,2904,2905],{"class":252,"line":340},[250,2906,1161],{"class":912},[250,2908,2909],{"class":252,"line":346},[250,2910,1077],{"class":912},[72,2912],{},[31,2914,2916],{"id":2915},"step-8-migration-guide","Step 8: Migration Guide",[2459,2918,2920],{"id":2919},"from-nodejs-to-bun","From Node.js to Bun",[2922,2923,2924,2948,3004],"ol",{},[564,2925,2926,2929,2944,2947],{},[546,2927,2928],{},"Test your dependencies",[47,2930,2932],{"className":758,"code":2931,"language":761,"meta":55,"style":55},"bun pm trust\n",[39,2933,2934],{"__ignoreMap":55},[250,2935,2936,2938,2941],{"class":252,"line":253},[250,2937,824],{"class":774},[250,2939,2940],{"class":782}," pm",[250,2942,2943],{"class":782}," trust\n",[2945,2946],"br",{},"This ensures all packages work with Bun's module resolution.",[564,2949,2950,2953],{},[546,2951,2952],{},"Update scripts",[47,2954,2956],{"className":902,"code":2955,"language":905,"meta":55,"style":55},"{\n  \"scripts\": {\n    \"dev\": \"bunx nuxi dev\",\n    \"build\": \"bunx nuxi build\",\n    \"start\": \"bunx nuxi start\"\n  }\n}\n",[39,2957,2958,2962,2968,2978,2988,2996,3000],{"__ignoreMap":55},[250,2959,2960],{"class":252,"line":253},[250,2961,913],{"class":912},[250,2963,2964,2966],{"class":252,"line":113},[250,2965,932],{"class":778},[250,2967,935],{"class":912},[250,2969,2970,2972,2974,2976],{"class":252,"line":110},[250,2971,940],{"class":778},[250,2973,921],{"class":912},[250,2975,945],{"class":782},[250,2977,927],{"class":912},[250,2979,2980,2982,2984,2986],{"class":252,"line":269},[250,2981,952],{"class":778},[250,2983,921],{"class":912},[250,2985,957],{"class":782},[250,2987,927],{"class":912},[250,2989,2990,2992,2994],{"class":252,"line":275},[250,2991,976],{"class":778},[250,2993,921],{"class":912},[250,2995,981],{"class":782},[250,2997,2998],{"class":252,"line":281},[250,2999,986],{"class":912},[250,3001,3002],{"class":252,"line":287},[250,3003,991],{"class":912},[564,3005,3006,3009],{},[546,3007,3008],{},"Check for Node.js-specific code",[47,3010,3012],{"className":758,"code":3011,"language":761,"meta":55,"style":55},"# Bun supports most Node.js APIs, but verify:\nbun --compat node_modules\n",[39,3013,3014,3019],{"__ignoreMap":55},[250,3015,3016],{"class":252,"line":253},[250,3017,3018],{"class":768},"# Bun supports most Node.js APIs, but verify:\n",[250,3020,3021,3023,3026],{"class":252,"line":113},[250,3022,824],{"class":774},[250,3024,3025],{"class":778}," --compat",[250,3027,3028],{"class":782}," node_modules\n",[2459,3030,3032],{"id":3031},"known-compatibility-issues","Known Compatibility Issues",[24,3034,3035,3049],{"type":26},[561,3036,3037,3043,3046],{},[564,3038,3039,3040],{},"Some native modules may require rebuilding: ",[39,3041,3042],{},"bun pm rebuild",[564,3044,3045],{},"Very old packages with C++ addons might not work",[564,3047,3048],{},"Edge cases in crypto API differ slightly",[20,3050,3051,3052,3056],{},"Most modern packages work perfectly—check ",[203,3053,3054],{"href":3054,"rel":3055},"https:\u002F\u002Fbun.sh\u002Fcompatibility",[207]," for updates.",[72,3058],{},[31,3060,3062],{"id":3061},"step-9-deployment","Step 9: Deployment",[2459,3064,3066],{"id":3065},"deploy-to-various-platforms","Deploy to Various Platforms",[3068,3069,3071],"h4",{"id":3070},"vercel","Vercel",[47,3073,3075],{"className":758,"code":3074,"filename":760,"language":761,"meta":55,"style":55},"# Vercel automatically detects Bun\nvercel deploy\n",[39,3076,3077,3082],{"__ignoreMap":55},[250,3078,3079],{"class":252,"line":253},[250,3080,3081],{"class":768},"# Vercel automatically detects Bun\n",[250,3083,3084,3086],{"class":252,"line":113},[250,3085,3070],{"class":774},[250,3087,3088],{"class":782}," deploy\n",[3068,3090,3092],{"id":3091},"railway","Railway",[47,3094,3097],{"className":902,"code":3095,"filename":3096,"language":905,"meta":55,"style":55},"{\n  \"build\": {\n    \"builder\": \"NIXPACKS_BUN\"\n  },\n  \"run\": {\n    \"command\": \"bun run start\"\n  }\n}\n","railway.json",[39,3098,3099,3103,3110,3120,3124,3131,3141,3145],{"__ignoreMap":55},[250,3100,3101],{"class":252,"line":253},[250,3102,913],{"class":912},[250,3104,3105,3108],{"class":252,"line":113},[250,3106,3107],{"class":778},"  \"build\"",[250,3109,935],{"class":912},[250,3111,3112,3115,3117],{"class":252,"line":110},[250,3113,3114],{"class":778},"    \"builder\"",[250,3116,921],{"class":912},[250,3118,3119],{"class":782},"\"NIXPACKS_BUN\"\n",[250,3121,3122],{"class":252,"line":269},[250,3123,1048],{"class":912},[250,3125,3126,3129],{"class":252,"line":275},[250,3127,3128],{"class":778},"  \"run\"",[250,3130,935],{"class":912},[250,3132,3133,3136,3138],{"class":252,"line":281},[250,3134,3135],{"class":778},"    \"command\"",[250,3137,921],{"class":912},[250,3139,3140],{"class":782},"\"bun run start\"\n",[250,3142,3143],{"class":252,"line":287},[250,3144,986],{"class":912},[250,3146,3147],{"class":252,"line":293},[250,3148,991],{"class":912},[3068,3150,3152],{"id":3151},"docker","Docker",[47,3154,3159],{"className":3155,"code":3156,"filename":3157,"language":3158,"meta":55,"style":55},"language-dockerfile shiki shiki-themes github-light github-dark","FROM oven\u002Fbun:1.2 AS base\nWORKDIR \u002Fapp\n\nCOPY package.json bun.lockb* .\u002F\nRUN bun install --frozen-lockfile\n\nCOPY . .\nRUN bun run build\n\nEXPOSE 3000\nCMD [\"bun\", \"run\", \"start\"]\n","Dockerfile","dockerfile",[39,3160,3161,3166,3171,3175,3180,3185,3189,3194,3199,3203,3208],{"__ignoreMap":55},[250,3162,3163],{"class":252,"line":253},[250,3164,3165],{},"FROM oven\u002Fbun:1.2 AS base\n",[250,3167,3168],{"class":252,"line":113},[250,3169,3170],{},"WORKDIR \u002Fapp\n",[250,3172,3173],{"class":252,"line":110},[250,3174,795],{"emptyLinePlaceholder":129},[250,3176,3177],{"class":252,"line":269},[250,3178,3179],{},"COPY package.json bun.lockb* .\u002F\n",[250,3181,3182],{"class":252,"line":275},[250,3183,3184],{},"RUN bun install --frozen-lockfile\n",[250,3186,3187],{"class":252,"line":281},[250,3188,795],{"emptyLinePlaceholder":129},[250,3190,3191],{"class":252,"line":287},[250,3192,3193],{},"COPY . .\n",[250,3195,3196],{"class":252,"line":293},[250,3197,3198],{},"RUN bun run build\n",[250,3200,3201],{"class":252,"line":299},[250,3202,795],{"emptyLinePlaceholder":129},[250,3204,3205],{"class":252,"line":132},[250,3206,3207],{},"EXPOSE 3000\n",[250,3209,3210],{"class":252,"line":310},[250,3211,3212],{},"CMD [\"bun\", \"run\", \"start\"]\n",[3068,3214,3216],{"id":3215},"buns-native-server","Bun's Native Server",[20,3218,3219],{},"Bun can serve directly:",[47,3221,3223],{"className":758,"code":3222,"filename":760,"language":761,"meta":55,"style":55},"bunx nuxi build\nbun run .output\u002Fserver\u002Findex.mjs\n",[39,3224,3225,3235],{"__ignoreMap":55},[250,3226,3227,3229,3232],{"class":252,"line":253},[250,3228,856],{"class":774},[250,3230,3231],{"class":782}," nuxi",[250,3233,3234],{"class":782}," build\n",[250,3236,3237,3239,3241],{"class":252,"line":113},[250,3238,824],{"class":774},[250,3240,1707],{"class":782},[250,3242,3243],{"class":782}," .output\u002Fserver\u002Findex.mjs\n",[161,3245,3248],{"icon":3246,"title":3247},"🚀","Production Ready",[20,3249,3250],{},"Bun is production-ready as of v1.2. Major companies are using it in production today. However, always test your specific dependency stack before deploying.",[72,3252],{},[31,3254,3256],{"id":3255},"what-weve-built","What We've Built",[20,3258,3259],{},"By the end of this guide, you have:",[561,3261,3262,3265,3268,3271,3274],{},[564,3263,3264],{},"A fully configured Bun + Nitro development environment",[564,3266,3267],{},"Fast API endpoints running on Bun",[564,3269,3270],{},"Performance benchmarks comparing to Node.js",[564,3272,3273],{},"Migration guidance from Node.js",[564,3275,3276],{},"Deployment configurations for multiple platforms",[2459,3278,3280],{"id":3279},"api-endpoints-summary","API Endpoints Summary",[645,3282,3283,3293],{},[648,3284,3285],{},[651,3286,3287,3290],{},[654,3288,3289],{},"Endpoint",[654,3291,3292],{},"Description",[666,3294,3295,3306,3316,3326,3336],{},[651,3296,3297,3303],{},[671,3298,3299,3300],{},"GET ",[39,3301,3302],{},"\u002Fapi\u002Fping",[671,3304,3305],{},"Health check with Bun info",[651,3307,3308,3313],{},[671,3309,3299,3310],{},[39,3311,3312],{},"\u002Fapi\u002Fproducts",[671,3314,3315],{},"Product list",[651,3317,3318,3323],{},[671,3319,3299,3320],{},[39,3321,3322],{},"\u002Fapi\u002Fbun-features",[671,3324,3325],{},"Bun-specific features demo",[651,3327,3328,3333],{},[671,3329,3299,3330],{},[39,3331,3332],{},"\u002Fapi\u002Fexternal",[671,3334,3335],{},"Parallel external API calls",[651,3337,3338,3344],{},[671,3339,3340,3341],{},"POST ",[39,3342,3343],{},"\u002Fapi\u002Forders",[671,3345,3346],{},"Order creation",[72,3348],{},[15,3350,3352],{"id":3351},"conclusion","Conclusion",[20,3354,3355,3358],{},[546,3356,3357],{},"Bun + Nitro"," represents the future of JavaScript server development. The combination of Bun's incredible performance and Nitro's deployment flexibility creates a stack that's hard to beat:",[561,3360,3361,3367,3372,3378,3384],{},[564,3362,3363,3366],{},[546,3364,3365],{},"Blazing fast startup"," — 5-6x faster than Node.js",[564,3368,3369,3371],{},[546,3370,603],{}," — No compilation step",[564,3373,3374,3377],{},[546,3375,3376],{},"Native Bun APIs"," — file, fetch, WebSocket built-in",[564,3379,3380,3383],{},[546,3381,3382],{},"Universal deployment"," — Node, serverless, edge",[564,3385,3386,3389],{},[546,3387,3388],{},"Same developer experience"," — Nuxt just works",[20,3391,3392],{},"The learning curve is minimal—if you know Nuxt and Node.js, you're already 95% of the way there. The remaining 5% is enjoying the speed.",[2459,3394,3396],{"id":3395},"when-to-use-bun","When to Use Bun",[561,3398,3399,3402,3405,3408,3411],{},[564,3400,3401],{},"✅ New projects where performance matters",[564,3403,3404],{},"✅ Serverless functions (cold start is critical)",[564,3406,3407],{},"✅ Rapid prototyping",[564,3409,3410],{},"✅ TypeScript-first projects",[564,3412,3413],{},"⚠️ Projects with many native C++ modules (test first)",[2459,3415,3417],{"id":3416},"when-to-stick-with-nodejs","When to Stick with Node.js",[561,3419,3420,3423,3426],{},[564,3421,3422],{},"✅ Enterprise projects with strict stability requirements",[564,3424,3425],{},"✅ Heavy reliance on legacy packages",[564,3427,3428],{},"✅ Teams less familiar with Bun's nuances",[20,3430,3431],{},"Start small—try Bun on your next side project or a single microservice. Once you experience the speed, you'll never want to go back. ☕⚡",[20,3433,3434],{},"Ready to build faster? Install Bun and try it today!",[500,3436,3437],{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":55,"searchDepth":110,"depth":110,"links":3439},[3440,3441,3442,3443,3444,3445,3446,3447,3448,3453,3457,3465],{"id":595,"depth":113,"text":596},{"id":639,"depth":113,"text":640},{"id":751,"depth":113,"text":752},{"id":837,"depth":113,"text":838},{"id":996,"depth":113,"text":997},{"id":1085,"depth":113,"text":1086},{"id":1691,"depth":113,"text":1692},{"id":1744,"depth":113,"text":1745},{"id":2456,"depth":113,"text":2457,"children":3449},[3450,3451,3452],{"id":2461,"depth":110,"text":2462},{"id":2629,"depth":110,"text":2630},{"id":2719,"depth":110,"text":2720},{"id":2915,"depth":113,"text":2916,"children":3454},[3455,3456],{"id":2919,"depth":110,"text":2920},{"id":3031,"depth":110,"text":3032},{"id":3061,"depth":113,"text":3062,"children":3458},[3459],{"id":3065,"depth":110,"text":3066,"children":3460},[3461,3462,3463,3464],{"id":3070,"depth":269,"text":3071},{"id":3091,"depth":269,"text":3092},{"id":3151,"depth":269,"text":3152},{"id":3215,"depth":269,"text":3216},{"id":3255,"depth":113,"text":3256,"children":3466},[3467,3468,3469],{"id":3279,"depth":110,"text":3280},{"id":3395,"depth":110,"text":3396},{"id":3416,"depth":110,"text":3417},"2026-03-03","Discover why Bun is the runtime to watch in 2026 and learn how to build blazing-fast APIs with Bun and Nitro. From setup to deployment, this guide covers everything.",{"type":12,"value":3473},[3474,3476,3480,3484,3486,3498],[15,3475,541],{"id":540},[20,3477,544,3478,549],{},[546,3479,548],{},[20,3481,552,3482,556],{},[546,3483,555],{},[20,3485,559],{},[561,3487,3488,3490,3492,3494,3496],{},[564,3489,566],{},[564,3491,569],{},[564,3493,572],{},[564,3495,575],{},[564,3497,578],{},[20,3499,581,3500,585],{},[546,3501,584],{},"https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1555949963-aa79dcee981c",[824,3504,3505,3506,3507,3508,3509],"nitro","runtime","performance","server","api","javascript","TypeScript",{},"\u002Fblog\u002Fbun-nitro-stack",{"title":533,"description":3471},"blog\u002Fbun-nitro-stack","Technology","5kj35lJsZOU5TvCgxnX5a86Jjh5mib6hwBB2mj_87E8",{"id":3518,"title":3519,"author":3520,"body":3521,"canonical":115,"categories":115,"date":4050,"description":4051,"excerpt":4052,"extension":118,"img":4068,"keywords":4069,"language":3510,"meta":4074,"navigation":129,"ogImage":115,"path":4075,"rating":275,"readTime":132,"seo":4076,"stem":4077,"tag":3515,"__hash__":4078},"blog\u002Fblog\u002Fdioxus.md","Getting Started with Dioxus 0.7: A Cross-Platform Rust UI Framework",{"name":8,"img":10,"website":535},{"type":12,"value":3522,"toc":4029},[3523,3525,3544,3547,3549,3553,3571,3583,3591,3593,3597,3600,3631,3639,3641,3645,3654,3658,3689,3699,3705,3707,3711,3722,3731,3734,3736,3740,3747,3751,3777,3780,3782,3786,3801,3805,3884,3894,3896,3900,3911,3915,3944,3950,3952,3956,3967,3971,3982,3989,3991,3995,4006,4013,4015,4017,4020,4027],[15,3524,541],{"id":540},[20,3526,3527,3530,3531,3534,3535,3538,3539],{},[546,3528,3529],{},"Dioxus 0.7"," is the latest stable version of a powerful cross-platform UI framework built in ",[546,3532,3533],{},"Rust",". With Dioxus, developers can use a single Rust codebase to build applications that run on the ",[546,3536,3537],{},"web, desktop, and mobile platforms"," — all while leveraging Rust’s performance, strong type safety, and modern tooling. ",[3540,3541,3543],"content-reference",{"index":3542},"0","oaicite:0",[20,3545,3546],{},"In this post, we’ll explore what Dioxus is, how it works, and how you can start building your first app using its declarative UI syntax and cross-platform capabilities.",[15,3548,748],{"id":747},[31,3550,3552],{"id":3551},"what-is-dioxus","What Is Dioxus?",[20,3554,3555,3556,3559,3560,3563,3564,3567,3568],{},"At its core, ",[546,3557,3558],{},"Dioxus"," is a developer-focused UI framework designed to simplify building interactive applications while offering the performance and safety benefits of Rust. It’s similar in spirit to frameworks like ",[546,3561,3562],{},"Flutter"," or ",[546,3565,3566],{},"React Native",", but deeply rooted in the Rust ecosystem. ",[3540,3569,3570],{"index":1198},"oaicite:1",[24,3572,3573],{"type":631},[20,3574,3575,3576,3579,3580],{},"Dioxus lets you build UI with familiar ",[546,3577,3578],{},"HTML and CSS"," semantics using Rust, and compile to web (WASM), desktop, and mobile targets from a single codebase. ",[3540,3581,3582],{"index":1226},"oaicite:2",[20,3584,3585,3586,3590],{},"The framework’s syntax is inspired by modern declarative UI paradigms, meaning you describe ",[3587,3588,3589],"em",{},"what your UI should look like"," instead of how to construct elements imperatively.",[72,3592],{},[31,3594,3596],{"id":3595},"why-use-dioxus","Why Use Dioxus?",[20,3598,3599],{},"Developers gravitate toward Dioxus because it offers:",[561,3601,3602,3608,3613,3619,3625],{},[564,3603,3604,3607],{},[546,3605,3606],{},"Cross-platform support"," (web, desktop, mobile)",[564,3609,3610],{},[546,3611,3612],{},"Rust’s performance and safety guarantees",[564,3614,3615,3618],{},[546,3616,3617],{},"RSX",", a macro-based declarative UI syntax",[564,3620,3621,3624],{},[546,3622,3623],{},"Hot-reloading"," for faster developer feedback",[564,3626,3627,3628],{},"Integrated tools for building, bundling, and deploying apps ",[3540,3629,3630],{"index":1249},"oaicite:3",[24,3632,3633],{"type":26},[20,3634,3635,3636],{},"Learning Rust’s syntax and its borrow checker can have a steeper learning curve if you’re coming from JavaScript or TypeScript — but the payoff is safer, faster applications. ",[3540,3637,3638],{"index":1273},"oaicite:4",[72,3640],{},[31,3642,3644],{"id":3643},"core-concepts-rsx-and-components","Core Concepts: RSX and Components",[20,3646,3647,3648,3650,3651],{},"Dioxus uses ",[546,3649,3617],{}," — a Rust macro that resembles JSX (from React) — to describe UI in a declarative way. Instead of manually creating and updating DOM elements, you declare what your components should render. ",[3540,3652,3653],{"index":1297},"oaicite:5",[2459,3655,3657],{"id":3656},"rsx-example","RSX Example",[47,3659,3663],{"className":3660,"code":3661,"language":3662,"meta":55,"style":55},"language-rust shiki shiki-themes github-light github-dark","fn App() -> Element {\n    rsx! {\n        div { \"Hello, world!\" }\n    }\n}\n","rust",[39,3664,3665,3670,3675,3680,3685],{"__ignoreMap":55},[250,3666,3667],{"class":252,"line":253},[250,3668,3669],{},"fn App() -> Element {\n",[250,3671,3672],{"class":252,"line":113},[250,3673,3674],{},"    rsx! {\n",[250,3676,3677],{"class":252,"line":110},[250,3678,3679],{},"        div { \"Hello, world!\" }\n",[250,3681,3682],{"class":252,"line":269},[250,3683,3684],{},"    }\n",[250,3686,3687],{"class":252,"line":275},[250,3688,991],{},[20,3690,3691,3692,3698],{},"RSX syntax feels familiar to developers experienced with JSX or other declarative UI languages, but with the robustness of Rust’s compiler and type system powering it. (",[203,3693,3697],{"href":3694,"rel":3695,"title":3696},"https:\u002F\u002Fdioxuslabs.com\u002Flearn\u002F0.7\u002Ftutorial\u002Frsx\u002F?utm_source=chatgpt.com",[207],"Dioxus | Fullstack crossplatform app framework for Rust","Dioxus Labs",")\n::",[20,3700,3701,3702,2390],{},"Hot-reloading is built in — when you save changes, your app updates instantly without a full rebuild. (",[203,3703,3697],{"href":3694,"rel":3704,"title":3696},[207],[72,3706],{},[31,3708,3710],{"id":3709},"state-management","State Management",[20,3712,3713,3714,3717,3718,2390],{},"Dioxus has a built-in reactivity model using ",[546,3715,3716],{},"signals",", allowing your UI to update when underlying data changes. Signals wrap ordinary Rust values and trigger component re-renders whenever they’re updated. (",[203,3719,3697],{"href":3720,"rel":3721,"title":3696},"https:\u002F\u002Fdioxuslabs.com\u002Flearn\u002F0.7\u002Ftutorial\u002Fstate\u002F?utm_source=chatgpt.com",[207],[47,3723,3725],{"className":3660,"code":3724,"language":3662,"meta":55,"style":55},"let mut count = use_signal(|| 0);\n",[39,3726,3727],{"__ignoreMap":55},[250,3728,3729],{"class":252,"line":253},[250,3730,3724],{},[20,3732,3733],{},"This simple reactive primitive brings interactivity to your applications with minimal boilerplate.",[72,3735],{},[31,3737,3739],{"id":3738},"building-a-complete-app-the-hotdog-tutorial","Building a Complete App: The HotDog Tutorial",[20,3741,3742,3743,2390],{},"To help developers get started, Dioxus provides a comprehensive tutorial where you’ll build a small cross-platform app called “HotDog” — a playful dog photo app that lets users swipe and save images. (",[203,3744,3697],{"href":3745,"rel":3746,"title":3696},"https:\u002F\u002Fdioxuslabs.com\u002Flearn\u002F0.7\u002Ftutorial\u002F?utm_source=chatgpt.com",[207],[2459,3748,3750],{"id":3749},"what-youll-learn","What You’ll Learn",[561,3752,3753,3756,3759,3762,3765,3768,3771],{},[564,3754,3755],{},"Tooling setup",[564,3757,3758],{},"Creating your first app project",[564,3760,3761],{},"Working with components",[564,3763,3764],{},"Adding state and interactivity",[564,3766,3767],{},"Fetching remote data",[564,3769,3770],{},"Routing and multi-page UI",[564,3772,3773,3774,2390],{},"Bundling and deployment (",[203,3775,3697],{"href":3745,"rel":3776,"title":3696},[207],[20,3778,3779],{},"This guided experience walks you from zero to a full app that runs across platforms, showing how Dioxus handles fullstack needs efficiently.",[72,3781],{},[31,3783,3785],{"id":3784},"fetching-data-and-resources","Fetching Data and Resources",[20,3787,3788,3789,3792,3793,3796,3797,2390],{},"Dioxus doesn’t have built-in data fetching utilities, so you’ll often leverage existing Rust crates like ",[39,3790,3791],{},"reqwest"," for HTTP client functionality and ",[39,3794,3795],{},"serde"," for JSON deserialization. (",[203,3798,3697],{"href":3799,"rel":3800,"title":3696},"https:\u002F\u002Fdioxuslabs.com\u002Flearn\u002F0.7\u002Ftutorial\u002Fdata_fetching?utm_source=chatgpt.com",[207],[2459,3802,3804],{"id":3803},"example-fetching-and-displaying-a-random-dog-image","Example: Fetching and Displaying a Random Dog Image",[47,3806,3808],{"className":3660,"code":3807,"language":3662,"meta":55,"style":55},"#[component]\nfn DogView() -> Element {\n    let mut img_src = use_resource(|| async move {\n        reqwest::get(\"https:\u002F\u002Fdog.ceo\u002Fapi\u002Fbreeds\u002Fimage\u002Frandom\")\n            .await.unwrap()\n            .json::\u003CDogApi>()\n            .await.unwrap()\n            .message\n    });\n\n    rsx! {\n        div {\n            img { src: img_src.cloned().unwrap_or_default() }\n        }\n    }\n}\n",[39,3809,3810,3815,3820,3825,3830,3835,3840,3844,3849,3853,3857,3861,3866,3871,3876,3880],{"__ignoreMap":55},[250,3811,3812],{"class":252,"line":253},[250,3813,3814],{},"#[component]\n",[250,3816,3817],{"class":252,"line":113},[250,3818,3819],{},"fn DogView() -> Element {\n",[250,3821,3822],{"class":252,"line":110},[250,3823,3824],{},"    let mut img_src = use_resource(|| async move {\n",[250,3826,3827],{"class":252,"line":269},[250,3828,3829],{},"        reqwest::get(\"https:\u002F\u002Fdog.ceo\u002Fapi\u002Fbreeds\u002Fimage\u002Frandom\")\n",[250,3831,3832],{"class":252,"line":275},[250,3833,3834],{},"            .await.unwrap()\n",[250,3836,3837],{"class":252,"line":281},[250,3838,3839],{},"            .json::\u003CDogApi>()\n",[250,3841,3842],{"class":252,"line":287},[250,3843,3834],{},[250,3845,3846],{"class":252,"line":293},[250,3847,3848],{},"            .message\n",[250,3850,3851],{"class":252,"line":299},[250,3852,1547],{},[250,3854,3855],{"class":252,"line":132},[250,3856,795],{"emptyLinePlaceholder":129},[250,3858,3859],{"class":252,"line":310},[250,3860,3674],{},[250,3862,3863],{"class":252,"line":316},[250,3864,3865],{},"        div {\n",[250,3867,3868],{"class":252,"line":322},[250,3869,3870],{},"            img { src: img_src.cloned().unwrap_or_default() }\n",[250,3872,3873],{"class":252,"line":328},[250,3874,3875],{},"        }\n",[250,3877,3878],{"class":252,"line":334},[250,3879,3684],{},[250,3881,3882],{"class":252,"line":340},[250,3883,991],{},[20,3885,3886,3887,3890,3891,2390],{},"This pattern shows how Dioxus integrates asynchronous logic with its reactive system via ",[39,3888,3889],{},"use_resource",". (",[203,3892,3697],{"href":3799,"rel":3893,"title":3696},[207],[72,3895],{},[31,3897,3899],{"id":3898},"routing-and-navigation","Routing and Navigation",[20,3901,3902,3903,3906,3907,2390],{},"Most real applications need multiple screens. Dioxus includes a ",[546,3904,3905],{},"type-safe router"," that maps enum variants to paths. (",[203,3908,3697],{"href":3909,"rel":3910,"title":3696},"https:\u002F\u002Fdioxuslabs.com\u002Flearn\u002F0.7\u002Ftutorial\u002Frouting\u002F?utm_source=chatgpt.com",[207],[2459,3912,3914],{"id":3913},"routing-example","Routing Example",[47,3916,3918],{"className":3660,"code":3917,"language":3662,"meta":55,"style":55},"#[derive(Routable, Clone, PartialEq)]\nenum Route {\n    #[route(\"\u002F\")]\n    DogView,\n}\n",[39,3919,3920,3925,3930,3935,3940],{"__ignoreMap":55},[250,3921,3922],{"class":252,"line":253},[250,3923,3924],{},"#[derive(Routable, Clone, PartialEq)]\n",[250,3926,3927],{"class":252,"line":113},[250,3928,3929],{},"enum Route {\n",[250,3931,3932],{"class":252,"line":110},[250,3933,3934],{},"    #[route(\"\u002F\")]\n",[250,3936,3937],{"class":252,"line":269},[250,3938,3939],{},"    DogView,\n",[250,3941,3942],{"class":252,"line":275},[250,3943,991],{},[20,3945,3946,3947,2390],{},"Once configured, navigating between pages is seamless and safe at compile time, reducing runtime bugs. (",[203,3948,3697],{"href":3909,"rel":3949,"title":3696},[207],[72,3951],{},[31,3953,3955],{"id":3954},"fullstack-capabilities","Fullstack Capabilities",[20,3957,3958,3959,3962,3963,2390],{},"Dioxus doesn’t just handle the frontend—",[546,3960,3961],{},"it also integrates backend logic directly in Rust",". You can combine frontend UI code with backend server functions, state management, and SSR capabilities via the fullstack features. (",[203,3964,3697],{"href":3965,"rel":3966,"title":3696},"https:\u002F\u002Fdioxuslabs.com\u002Flearn\u002F0.7\u002Fessentials\u002Ffullstack\u002F?utm_source=chatgpt.com",[207],[2459,3968,3970],{"id":3969},"fullstack-features","Fullstack Features",[561,3972,3973,3976,3979],{},[564,3974,3975],{},"Server functions callable from the UI",[564,3977,3978],{},"Integration with backend frameworks",[564,3980,3981],{},"Static and dynamic content rendering\n::",[20,3983,3984,3985,3988],{},"This makes Dioxus ideal for ",[546,3986,3987],{},"end-to-end Rust applications"," where both client and server share a language and ecosystem.",[72,3990],{},[31,3992,3994],{"id":3993},"why-dioxus-matters","Why Dioxus Matters",[20,3996,3997,3998,4001,4002,2390],{},"With Dioxus 0.7, Rust developers finally have a ",[546,3999,4000],{},"mature, ergonomic framework"," for building cross-platform UI applications that don’t compromise performance or safety. The combination of Rust’s compile-time guarantees, declarative UI, and comprehensive tooling makes it a compelling choice for modern application development. (",[203,4003,3697],{"href":4004,"rel":4005,"title":3696},"https:\u002F\u002Fdioxuslabs.com\u002Flearn\u002F0.7\u002F?utm_source=chatgpt.com",[207],[20,4007,4008,4009,4012],{},"Whether you’re building a ",[546,4010,4011],{},"mobile app, desktop client, or WASM-based web UI",", Dioxus helps you maintain a single codebase across all platforms without sacrificing developer productivity.",[72,4014],{},[15,4016,3352],{"id":3351},[20,4018,4019],{},"Dioxus 0.7 is more than just a UI framework — it’s a unified platform for building fullstack, cross-platform applications entirely in Rust. With intuitive UI syntax, powerful state management, routing, backend integration, and solid tooling, it’s positioned as a strong contender for modern app development in Rust.",[20,4021,4022,4023,4026],{},"If you’re ready to build ",[546,4024,4025],{},"fast, safe, and beautiful applications",", Dioxus is a framework worth exploring. 🚀",[500,4028,502],{},{"title":55,"searchDepth":110,"depth":110,"links":4030},[4031,4032,4033,4036,4037,4040,4043,4046,4049],{"id":3551,"depth":113,"text":3552},{"id":3595,"depth":113,"text":3596},{"id":3643,"depth":113,"text":3644,"children":4034},[4035],{"id":3656,"depth":110,"text":3657},{"id":3709,"depth":113,"text":3710},{"id":3738,"depth":113,"text":3739,"children":4038},[4039],{"id":3749,"depth":110,"text":3750},{"id":3784,"depth":113,"text":3785,"children":4041},[4042],{"id":3803,"depth":110,"text":3804},{"id":3898,"depth":113,"text":3899,"children":4044},[4045],{"id":3913,"depth":110,"text":3914},{"id":3954,"depth":113,"text":3955,"children":4047},[4048],{"id":3969,"depth":110,"text":3970},{"id":3993,"depth":113,"text":3994},"2026-01-10","Explore Dioxus 0.7 — what it is, how it works across platforms using Rust, and why it’s an exciting choice for building modern UI applications.",{"type":12,"value":4053},[4054,4056,4066],[15,4055,541],{"id":540},[20,4057,4058,3530,4060,3534,4062,3538,4064],{},[546,4059,3529],{},[546,4061,3533],{},[546,4063,3537],{},[3540,4065,3543],{"index":3542},[20,4067,3546],{},"https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1590608897129-79d5d1839d6b",[4070,3662,4071,4072,4073],"dioxus","cross-platform","ui","fullstack",{},"\u002Fblog\u002Fdioxus",{"title":3519,"description":4051},"blog\u002Fdioxus","ik7qwhV3ti2_3_TQgouu70cD-IzsGInsTWSbYMdqmWU",{"id":4080,"title":4081,"author":4082,"body":4083,"canonical":115,"categories":115,"date":3470,"description":8209,"excerpt":8210,"extension":118,"img":3502,"keywords":8228,"language":3510,"meta":8235,"navigation":129,"ogImage":115,"path":8236,"rating":275,"readTime":316,"seo":8237,"stem":8238,"tag":3515,"__hash__":8239},"blog\u002Fblog\u002Fdrizzle-nitro-api.md","Building a Production API with Drizzle ORM + Nitro: A Complete Guide",{"name":8,"img":10,"website":535},{"type":12,"value":4084,"toc":8184},[4085,4087,4094,4101,4104,4111,4115,4118,4150,4155,4157,4159,4163,4166,4177,4179,4183,4186,4250,4255,4257,4261,4264,4269,4356,4358,4362,4365,4385,4390,5034,5041,5043,5047,5050,5055,5344,5346,5350,5353,5358,5789,5791,5795,5799,5804,5894,5898,5903,6129,6133,6136,6140,7057,7061,7066,7567,7571,7576,7798,7800,7804,7807,7844,7859,7861,7865,7868,7880,7884,7902,7906,7918,7922,7989,7993,8027,8029,8031,8033,8050,8052,8140,8142,8144,8151,8154,8174,8181],[15,4086,541],{"id":540},[20,4088,4089,4090,4093],{},"In our ",[546,4091,4092],{},"BrewStop food truck series",", we used Unstorage for data persistence—an excellent choice for prototypes and simple applications. But when you're building for production, you need something more robust: a proper database with type-safe queries, migrations, and scalable architecture.",[20,4095,4096,4097,4100],{},"That's where ",[546,4098,4099],{},"Drizzle ORM"," comes in.",[20,4102,4103],{},"Drizzle is a lightweight, TypeScript-first ORM that gives you the control of raw SQL with the ergonomics of an ORM. It pairs beautifully with Nitro, offering a production-ready data layer that won't slow you down.",[20,4105,4106,4107,4110],{},"In this post, we'll build a complete database-backed API using ",[546,4108,4109],{},"Drizzle ORM + Nitro","—covering setup, schema design, queries, and deployment.",[15,4112,4114],{"id":4113},"why-drizzle-orm","Why Drizzle ORM?",[20,4116,4117],{},"Before we dive in, let's talk about why Drizzle is worth your attention:",[561,4119,4120,4126,4132,4138,4144],{},[564,4121,4122,4125],{},[546,4123,4124],{},"Type-safe queries"," — TypeScript understands your schema end-to-end",[564,4127,4128,4131],{},[546,4129,4130],{},"Lightweight"," — No heavy runtime, compiles to efficient SQL",[564,4133,4134,4137],{},[546,4135,4136],{},"Portable"," — Works with PostgreSQL, MySQL, SQLite, and more",[564,4139,4140,4143],{},[546,4141,4142],{},"Migration support"," — First-class migration tooling",[564,4145,4146,4149],{},[546,4147,4148],{},"Zero dependencies"," — Doesn't pull in unnecessary bloat",[24,4151,4152],{"type":631},[20,4153,4154],{},"Drizzle is designed to feel like you're writing SQL—but with full type safety and IDE autocomplete.",[72,4156],{},[15,4158,748],{"id":747},[31,4160,4162],{"id":4161},"prerequisites","Prerequisites",[20,4164,4165],{},"This guide assumes you have:",[561,4167,4168,4171,4174],{},[564,4169,4170],{},"Node.js 18+ installed",[564,4172,4173],{},"Basic knowledge of TypeScript",[564,4175,4176],{},"A PostgreSQL or SQLite database (we'll use SQLite for simplicity, but the code is mostly identical)",[72,4178],{},[31,4180,4182],{"id":4181},"step-1-project-setup","Step 1: Project Setup",[20,4184,4185],{},"Let's start by creating a new Nitro project and installing Drizzle.",[47,4187,4189],{"className":758,"code":4188,"filename":760,"language":761,"meta":55,"style":55},"# Create a new Nitro project\nnpx create-nitro-app brewstop-api-v2\ncd brewstop-api-v2\n\n# Install Drizzle ORM and SQLite driver\nnpm install drizzle-orm better-sqlite3\nnpm install -D drizzle-kit @types\u002Fbetter-sqlite3\n",[39,4190,4191,4196,4207,4213,4217,4222,4235],{"__ignoreMap":55},[250,4192,4193],{"class":252,"line":253},[250,4194,4195],{"class":768},"# Create a new Nitro project\n",[250,4197,4198,4201,4204],{"class":252,"line":113},[250,4199,4200],{"class":774},"npx",[250,4202,4203],{"class":782}," create-nitro-app",[250,4205,4206],{"class":782}," brewstop-api-v2\n",[250,4208,4209,4211],{"class":252,"line":110},[250,4210,874],{"class":778},[250,4212,4206],{"class":782},[250,4214,4215],{"class":252,"line":269},[250,4216,795],{"emptyLinePlaceholder":129},[250,4218,4219],{"class":252,"line":275},[250,4220,4221],{"class":768},"# Install Drizzle ORM and SQLite driver\n",[250,4223,4224,4227,4229,4232],{"class":252,"line":281},[250,4225,4226],{"class":774},"npm",[250,4228,808],{"class":782},[250,4230,4231],{"class":782}," drizzle-orm",[250,4233,4234],{"class":782}," better-sqlite3\n",[250,4236,4237,4239,4241,4244,4247],{"class":252,"line":287},[250,4238,4226],{"class":774},[250,4240,808],{"class":782},[250,4242,4243],{"class":778}," -D",[250,4245,4246],{"class":782}," drizzle-kit",[250,4248,4249],{"class":782}," @types\u002Fbetter-sqlite3\n",[24,4251,4252],{"type":26},[20,4253,4254],{},"Make sure to use the appropriate driver for your database (pg for PostgreSQL, mysql2 for MySQL, etc.). We'll use better-sqlite3 for this example.",[72,4256],{},[31,4258,4260],{"id":4259},"step-2-configure-drizzle","Step 2: Configure Drizzle",[20,4262,4263],{},"Create a configuration file for Drizzle. This tells Drizzle where your database is and how to handle migrations.",[20,4265,1092,4266,1007],{},[39,4267,4268],{},"drizzle.config.ts",[47,4270,4272],{"className":1010,"code":4271,"filename":4268,"language":1012,"meta":55,"style":55},"import { defineConfig } from \"drizzle-kit\";\n\nexport default defineConfig({\n  schema: \".\u002Fserver\u002Fdb\u002Fschema.ts\",\n  out: \".\u002Fdrizzle\",\n  dialect: \"sqlite\",\n  dbCredentials: {\n    url: \".\u002Fbrewstop.db\",\n  },\n});\n",[39,4273,4274,4288,4292,4303,4313,4323,4333,4338,4348,4352],{"__ignoreMap":55},[250,4275,4276,4278,4281,4283,4286],{"class":252,"line":253},[250,4277,1763],{"class":786},[250,4279,4280],{"class":912}," { defineConfig } ",[250,4282,1769],{"class":786},[250,4284,4285],{"class":782}," \"drizzle-kit\"",[250,4287,1379],{"class":912},[250,4289,4290],{"class":252,"line":113},[250,4291,795],{"emptyLinePlaceholder":129},[250,4293,4294,4296,4298,4301],{"class":252,"line":110},[250,4295,1019],{"class":786},[250,4297,1022],{"class":786},[250,4299,4300],{"class":774}," defineConfig",[250,4302,1028],{"class":912},[250,4304,4305,4308,4311],{"class":252,"line":269},[250,4306,4307],{"class":912},"  schema: ",[250,4309,4310],{"class":782},"\".\u002Fserver\u002Fdb\u002Fschema.ts\"",[250,4312,927],{"class":912},[250,4314,4315,4318,4321],{"class":252,"line":275},[250,4316,4317],{"class":912},"  out: ",[250,4319,4320],{"class":782},"\".\u002Fdrizzle\"",[250,4322,927],{"class":912},[250,4324,4325,4328,4331],{"class":252,"line":281},[250,4326,4327],{"class":912},"  dialect: ",[250,4329,4330],{"class":782},"\"sqlite\"",[250,4332,927],{"class":912},[250,4334,4335],{"class":252,"line":287},[250,4336,4337],{"class":912},"  dbCredentials: {\n",[250,4339,4340,4343,4346],{"class":252,"line":293},[250,4341,4342],{"class":912},"    url: ",[250,4344,4345],{"class":782},"\".\u002Fbrewstop.db\"",[250,4347,927],{"class":912},[250,4349,4350],{"class":252,"line":299},[250,4351,1048],{"class":912},[250,4353,4354],{"class":252,"line":132},[250,4355,1077],{"class":912},[72,4357],{},[31,4359,4361],{"id":4360},"step-3-define-your-schema","Step 3: Define Your Schema",[20,4363,4364],{},"Now let's design our database schema. For BrewStop, we need:",[561,4366,4367,4373,4379],{},[564,4368,4369,4372],{},[546,4370,4371],{},"Menu items"," — products the food truck sells",[564,4374,4375,4378],{},[546,4376,4377],{},"Orders"," — customer orders",[564,4380,4381,4384],{},[546,4382,4383],{},"Order items"," — individual items within an order",[20,4386,1092,4387,1007],{},[39,4388,4389],{},"server\u002Fdb\u002Fschema.ts",[47,4391,4393],{"className":1010,"code":4392,"filename":4389,"language":1012,"meta":55,"style":55},"import { sqliteTable, text, integer, real } from \"drizzle-orm\u002Fsqlite-core\";\nimport { sql } from \"drizzle-orm\";\n\n\u002F\u002F Menu Items Table\nexport const menuItems = sqliteTable(\"menu_items\", {\n  id: text(\"id\").primaryKey(),\n  name: text(\"name\").notNull(),\n  description: text(\"description\"),\n  price: real(\"price\").notNull(),\n  category: text(\"category\").notNull(), \u002F\u002F coffee, tea, food\n  available: integer(\"available\", { mode: \"boolean\" }).default(true),\n  createdAt: integer(\"created_at\", { mode: \"timestamp\" })\n    .default(sql`CURRENT_TIMESTAMP`),\n});\n\n\u002F\u002F Orders Table\nexport const orders = sqliteTable(\"orders\", {\n  id: text(\"id\").primaryKey(),\n  status: text(\"status\").notNull().default(\"pending\"), \u002F\u002F pending, preparing, ready, completed\n  customerName: text(\"customer_name\"),\n  total: real(\"total\").notNull(),\n  createdAt: integer(\"created_at\", { mode: \"timestamp\" })\n    .default(sql`CURRENT_TIMESTAMP`),\n  updatedAt: integer(\"updated_at\", { mode: \"timestamp\" })\n    .default(sql`CURRENT_TIMESTAMP`),\n});\n\n\u002F\u002F Order Items Table (junction table)\nexport const orderItems = sqliteTable(\"order_items\", {\n  id: text(\"id\").primaryKey(),\n  orderId: text(\"order_id\")\n    .notNull()\n    .references(() => orders.id),\n  menuItemId: text(\"menu_item_id\")\n    .notNull()\n    .references(() => menuItems.id),\n  quantity: integer(\"quantity\").notNull().default(1),\n  unitPrice: real(\"unit_price\").notNull(),\n});\n\n\u002F\u002F Type exports for TypeScript\nexport type MenuItem = typeof menuItems.$inferSelect;\nexport type NewMenuItem = typeof menuItems.$inferInsert;\nexport type Order = typeof orders.$inferSelect;\nexport type NewOrder = typeof orders.$inferInsert;\n",[39,4394,4395,4409,4423,4427,4432,4455,4474,4493,4508,4527,4549,4580,4600,4617,4621,4625,4630,4649,4665,4695,4709,4727,4743,4757,4775,4789,4793,4797,4802,4822,4838,4853,4862,4876,4890,4898,4911,4937,4955,4959,4963,4968,4986,5002,5018],{"__ignoreMap":55},[250,4396,4397,4399,4402,4404,4407],{"class":252,"line":253},[250,4398,1763],{"class":786},[250,4400,4401],{"class":912}," { sqliteTable, text, integer, real } ",[250,4403,1769],{"class":786},[250,4405,4406],{"class":782}," \"drizzle-orm\u002Fsqlite-core\"",[250,4408,1379],{"class":912},[250,4410,4411,4413,4416,4418,4421],{"class":252,"line":113},[250,4412,1763],{"class":786},[250,4414,4415],{"class":912}," { sql } ",[250,4417,1769],{"class":786},[250,4419,4420],{"class":782}," \"drizzle-orm\"",[250,4422,1379],{"class":912},[250,4424,4425],{"class":252,"line":110},[250,4426,795],{"emptyLinePlaceholder":129},[250,4428,4429],{"class":252,"line":269},[250,4430,4431],{"class":768},"\u002F\u002F Menu Items Table\n",[250,4433,4434,4436,4439,4442,4444,4447,4449,4452],{"class":252,"line":275},[250,4435,1019],{"class":786},[250,4437,4438],{"class":786}," const",[250,4440,4441],{"class":778}," menuItems",[250,4443,1187],{"class":786},[250,4445,4446],{"class":774}," sqliteTable",[250,4448,1434],{"class":912},[250,4450,4451],{"class":782},"\"menu_items\"",[250,4453,4454],{"class":912},", {\n",[250,4456,4457,4460,4462,4464,4467,4469,4472],{"class":252,"line":281},[250,4458,4459],{"class":912},"  id: ",[250,4461,52],{"class":774},[250,4463,1434],{"class":912},[250,4465,4466],{"class":782},"\"id\"",[250,4468,2380],{"class":912},[250,4470,4471],{"class":774},"primaryKey",[250,4473,1156],{"class":912},[250,4475,4476,4479,4481,4483,4486,4488,4491],{"class":252,"line":287},[250,4477,4478],{"class":912},"  name: ",[250,4480,52],{"class":774},[250,4482,1434],{"class":912},[250,4484,4485],{"class":782},"\"name\"",[250,4487,2380],{"class":912},[250,4489,4490],{"class":774},"notNull",[250,4492,1156],{"class":912},[250,4494,4495,4498,4500,4502,4505],{"class":252,"line":293},[250,4496,4497],{"class":912},"  description: ",[250,4499,52],{"class":774},[250,4501,1434],{"class":912},[250,4503,4504],{"class":782},"\"description\"",[250,4506,4507],{"class":912},"),\n",[250,4509,4510,4513,4516,4518,4521,4523,4525],{"class":252,"line":299},[250,4511,4512],{"class":912},"  price: ",[250,4514,4515],{"class":774},"real",[250,4517,1434],{"class":912},[250,4519,4520],{"class":782},"\"price\"",[250,4522,2380],{"class":912},[250,4524,4490],{"class":774},[250,4526,1156],{"class":912},[250,4528,4529,4532,4534,4536,4539,4541,4543,4546],{"class":252,"line":132},[250,4530,4531],{"class":912},"  category: ",[250,4533,52],{"class":774},[250,4535,1434],{"class":912},[250,4537,4538],{"class":782},"\"category\"",[250,4540,2380],{"class":912},[250,4542,4490],{"class":774},[250,4544,4545],{"class":912},"(), ",[250,4547,4548],{"class":768},"\u002F\u002F coffee, tea, food\n",[250,4550,4551,4554,4557,4559,4562,4565,4568,4571,4574,4576,4578],{"class":252,"line":310},[250,4552,4553],{"class":912},"  available: ",[250,4555,4556],{"class":774},"integer",[250,4558,1434],{"class":912},[250,4560,4561],{"class":782},"\"available\"",[250,4563,4564],{"class":912},", { mode: ",[250,4566,4567],{"class":782},"\"boolean\"",[250,4569,4570],{"class":912}," }).",[250,4572,4573],{"class":774},"default",[250,4575,1434],{"class":912},[250,4577,1066],{"class":778},[250,4579,4507],{"class":912},[250,4581,4582,4585,4587,4589,4592,4594,4597],{"class":252,"line":316},[250,4583,4584],{"class":912},"  createdAt: ",[250,4586,4556],{"class":774},[250,4588,1434],{"class":912},[250,4590,4591],{"class":782},"\"created_at\"",[250,4593,4564],{"class":912},[250,4595,4596],{"class":782},"\"timestamp\"",[250,4598,4599],{"class":912}," })\n",[250,4601,4602,4605,4607,4609,4612,4615],{"class":252,"line":322},[250,4603,4604],{"class":912},"    .",[250,4606,4573],{"class":774},[250,4608,1434],{"class":912},[250,4610,4611],{"class":774},"sql",[250,4613,4614],{"class":782},"`CURRENT_TIMESTAMP`",[250,4616,4507],{"class":912},[250,4618,4619],{"class":252,"line":328},[250,4620,1077],{"class":912},[250,4622,4623],{"class":252,"line":334},[250,4624,795],{"emptyLinePlaceholder":129},[250,4626,4627],{"class":252,"line":340},[250,4628,4629],{"class":768},"\u002F\u002F Orders Table\n",[250,4631,4632,4634,4636,4638,4640,4642,4644,4647],{"class":252,"line":346},[250,4633,1019],{"class":786},[250,4635,4438],{"class":786},[250,4637,1405],{"class":778},[250,4639,1187],{"class":786},[250,4641,4446],{"class":774},[250,4643,1434],{"class":912},[250,4645,4646],{"class":782},"\"orders\"",[250,4648,4454],{"class":912},[250,4650,4651,4653,4655,4657,4659,4661,4663],{"class":252,"line":352},[250,4652,4459],{"class":912},[250,4654,52],{"class":774},[250,4656,1434],{"class":912},[250,4658,4466],{"class":782},[250,4660,2380],{"class":912},[250,4662,4471],{"class":774},[250,4664,1156],{"class":912},[250,4666,4667,4670,4672,4674,4677,4679,4681,4683,4685,4687,4689,4692],{"class":252,"line":358},[250,4668,4669],{"class":912},"  status: ",[250,4671,52],{"class":774},[250,4673,1434],{"class":912},[250,4675,4676],{"class":782},"\"status\"",[250,4678,2380],{"class":912},[250,4680,4490],{"class":774},[250,4682,1647],{"class":912},[250,4684,4573],{"class":774},[250,4686,1434],{"class":912},[250,4688,1631],{"class":782},[250,4690,4691],{"class":912},"), ",[250,4693,4694],{"class":768},"\u002F\u002F pending, preparing, ready, completed\n",[250,4696,4697,4700,4702,4704,4707],{"class":252,"line":364},[250,4698,4699],{"class":912},"  customerName: ",[250,4701,52],{"class":774},[250,4703,1434],{"class":912},[250,4705,4706],{"class":782},"\"customer_name\"",[250,4708,4507],{"class":912},[250,4710,4711,4714,4716,4718,4721,4723,4725],{"class":252,"line":370},[250,4712,4713],{"class":912},"  total: ",[250,4715,4515],{"class":774},[250,4717,1434],{"class":912},[250,4719,4720],{"class":782},"\"total\"",[250,4722,2380],{"class":912},[250,4724,4490],{"class":774},[250,4726,1156],{"class":912},[250,4728,4729,4731,4733,4735,4737,4739,4741],{"class":252,"line":376},[250,4730,4584],{"class":912},[250,4732,4556],{"class":774},[250,4734,1434],{"class":912},[250,4736,4591],{"class":782},[250,4738,4564],{"class":912},[250,4740,4596],{"class":782},[250,4742,4599],{"class":912},[250,4744,4745,4747,4749,4751,4753,4755],{"class":252,"line":382},[250,4746,4604],{"class":912},[250,4748,4573],{"class":774},[250,4750,1434],{"class":912},[250,4752,4611],{"class":774},[250,4754,4614],{"class":782},[250,4756,4507],{"class":912},[250,4758,4759,4762,4764,4766,4769,4771,4773],{"class":252,"line":388},[250,4760,4761],{"class":912},"  updatedAt: ",[250,4763,4556],{"class":774},[250,4765,1434],{"class":912},[250,4767,4768],{"class":782},"\"updated_at\"",[250,4770,4564],{"class":912},[250,4772,4596],{"class":782},[250,4774,4599],{"class":912},[250,4776,4777,4779,4781,4783,4785,4787],{"class":252,"line":393},[250,4778,4604],{"class":912},[250,4780,4573],{"class":774},[250,4782,1434],{"class":912},[250,4784,4611],{"class":774},[250,4786,4614],{"class":782},[250,4788,4507],{"class":912},[250,4790,4791],{"class":252,"line":399},[250,4792,1077],{"class":912},[250,4794,4795],{"class":252,"line":405},[250,4796,795],{"emptyLinePlaceholder":129},[250,4798,4799],{"class":252,"line":410},[250,4800,4801],{"class":768},"\u002F\u002F Order Items Table (junction table)\n",[250,4803,4804,4806,4808,4811,4813,4815,4817,4820],{"class":252,"line":415},[250,4805,1019],{"class":786},[250,4807,4438],{"class":786},[250,4809,4810],{"class":778}," orderItems",[250,4812,1187],{"class":786},[250,4814,4446],{"class":774},[250,4816,1434],{"class":912},[250,4818,4819],{"class":782},"\"order_items\"",[250,4821,4454],{"class":912},[250,4823,4824,4826,4828,4830,4832,4834,4836],{"class":252,"line":420},[250,4825,4459],{"class":912},[250,4827,52],{"class":774},[250,4829,1434],{"class":912},[250,4831,4466],{"class":782},[250,4833,2380],{"class":912},[250,4835,4471],{"class":774},[250,4837,1156],{"class":912},[250,4839,4840,4843,4845,4847,4850],{"class":252,"line":426},[250,4841,4842],{"class":912},"  orderId: ",[250,4844,52],{"class":774},[250,4846,1434],{"class":912},[250,4848,4849],{"class":782},"\"order_id\"",[250,4851,4852],{"class":912},")\n",[250,4854,4855,4857,4859],{"class":252,"line":431},[250,4856,4604],{"class":912},[250,4858,4490],{"class":774},[250,4860,4861],{"class":912},"()\n",[250,4863,4864,4866,4869,4871,4873],{"class":252,"line":436},[250,4865,4604],{"class":912},[250,4867,4868],{"class":774},"references",[250,4870,1112],{"class":912},[250,4872,1115],{"class":786},[250,4874,4875],{"class":912}," orders.id),\n",[250,4877,4878,4881,4883,4885,4888],{"class":252,"line":442},[250,4879,4880],{"class":912},"  menuItemId: ",[250,4882,52],{"class":774},[250,4884,1434],{"class":912},[250,4886,4887],{"class":782},"\"menu_item_id\"",[250,4889,4852],{"class":912},[250,4891,4892,4894,4896],{"class":252,"line":447},[250,4893,4604],{"class":912},[250,4895,4490],{"class":774},[250,4897,4861],{"class":912},[250,4899,4900,4902,4904,4906,4908],{"class":252,"line":453},[250,4901,4604],{"class":912},[250,4903,4868],{"class":774},[250,4905,1112],{"class":912},[250,4907,1115],{"class":786},[250,4909,4910],{"class":912}," menuItems.id),\n",[250,4912,4913,4916,4918,4920,4923,4925,4927,4929,4931,4933,4935],{"class":252,"line":459},[250,4914,4915],{"class":912},"  quantity: ",[250,4917,4556],{"class":774},[250,4919,1434],{"class":912},[250,4921,4922],{"class":782},"\"quantity\"",[250,4924,2380],{"class":912},[250,4926,4490],{"class":774},[250,4928,1647],{"class":912},[250,4930,4573],{"class":774},[250,4932,1434],{"class":912},[250,4934,1198],{"class":778},[250,4936,4507],{"class":912},[250,4938,4939,4942,4944,4946,4949,4951,4953],{"class":252,"line":465},[250,4940,4941],{"class":912},"  unitPrice: ",[250,4943,4515],{"class":774},[250,4945,1434],{"class":912},[250,4947,4948],{"class":782},"\"unit_price\"",[250,4950,2380],{"class":912},[250,4952,4490],{"class":774},[250,4954,1156],{"class":912},[250,4956,4957],{"class":252,"line":471},[250,4958,1077],{"class":912},[250,4960,4961],{"class":252,"line":2201},[250,4962,795],{"emptyLinePlaceholder":129},[250,4964,4965],{"class":252,"line":2207},[250,4966,4967],{"class":768},"\u002F\u002F Type exports for TypeScript\n",[250,4969,4970,4972,4975,4978,4980,4983],{"class":252,"line":2213},[250,4971,1019],{"class":786},[250,4973,4974],{"class":786}," type",[250,4976,4977],{"class":774}," MenuItem",[250,4979,1187],{"class":786},[250,4981,4982],{"class":786}," typeof",[250,4984,4985],{"class":912}," menuItems.$inferSelect;\n",[250,4987,4988,4990,4992,4995,4997,4999],{"class":252,"line":2218},[250,4989,1019],{"class":786},[250,4991,4974],{"class":786},[250,4993,4994],{"class":774}," NewMenuItem",[250,4996,1187],{"class":786},[250,4998,4982],{"class":786},[250,5000,5001],{"class":912}," menuItems.$inferInsert;\n",[250,5003,5004,5006,5008,5011,5013,5015],{"class":252,"line":2223},[250,5005,1019],{"class":786},[250,5007,4974],{"class":786},[250,5009,5010],{"class":774}," Order",[250,5012,1187],{"class":786},[250,5014,4982],{"class":786},[250,5016,5017],{"class":912}," orders.$inferSelect;\n",[250,5019,5020,5022,5024,5027,5029,5031],{"class":252,"line":2239},[250,5021,1019],{"class":786},[250,5023,4974],{"class":786},[250,5025,5026],{"class":774}," NewOrder",[250,5028,1187],{"class":786},[250,5030,4982],{"class":786},[250,5032,5033],{"class":912}," orders.$inferInsert;\n",[161,5035,5038],{"icon":5036,"title":5037},"🔑","Schema Best Practices",[20,5039,5040],{},"Always define your schema in TypeScript. Drizzle's type inference means your queries will be fully typed—no more guessing what fields exist on your models.",[72,5042],{},[31,5044,5046],{"id":5045},"step-4-initialize-the-database-connection","Step 4: Initialize the Database Connection",[20,5048,5049],{},"Create a database connection utility that Nitro can use.",[20,5051,1092,5052,1007],{},[39,5053,5054],{},"server\u002Fdb\u002Findex.ts",[47,5056,5058],{"className":1010,"code":5057,"filename":5054,"language":1012,"meta":55,"style":55},"import Database from \"better-sqlite3\";\nimport { drizzle } from \"drizzle-orm\u002Fbetter-sqlite3\";\nimport * as schema from \".\u002Fschema\";\n\nconst sqlite = new Database(\"brewstop.db\");\nexport const db = drizzle(sqlite, { schema });\n\n\u002F\u002F Initialize tables on startup\nexport function initializeDatabase() {\n  sqlite.exec(`\n    CREATE TABLE IF NOT EXISTS menu_items (\n      id TEXT PRIMARY KEY,\n      name TEXT NOT NULL,\n      description TEXT,\n      price REAL NOT NULL,\n      category TEXT NOT NULL,\n      available INTEGER DEFAULT 1,\n      created_at INTEGER DEFAULT (strftime('%s', 'now'))\n    );\n\n    CREATE TABLE IF NOT EXISTS orders (\n      id TEXT PRIMARY KEY,\n      status TEXT NOT NULL DEFAULT 'pending',\n      customer_name TEXT,\n      total REAL NOT NULL,\n      created_at INTEGER DEFAULT (strftime('%s', 'now')),\n      updated_at INTEGER DEFAULT (strftime('%s', 'now'))\n    );\n\n    CREATE TABLE IF NOT EXISTS order_items (\n      id TEXT PRIMARY KEY,\n      order_id TEXT NOT NULL,\n      menu_item_id TEXT NOT NULL,\n      quantity INTEGER DEFAULT 1,\n      unit_price REAL NOT NULL,\n      FOREIGN KEY (order_id) REFERENCES orders(id),\n      FOREIGN KEY (menu_item_id) REFERENCES menu_items(id)\n    );\n  `);\n  \n  console.log(\"✅ Database initialized\");\n}\n",[39,5059,5060,5074,5088,5108,5112,5133,5150,5154,5159,5170,5183,5188,5193,5198,5203,5208,5213,5218,5223,5227,5231,5236,5240,5245,5250,5255,5260,5265,5269,5273,5278,5282,5287,5292,5297,5302,5307,5312,5316,5323,5327,5340],{"__ignoreMap":55},[250,5061,5062,5064,5067,5069,5072],{"class":252,"line":253},[250,5063,1763],{"class":786},[250,5065,5066],{"class":912}," Database ",[250,5068,1769],{"class":786},[250,5070,5071],{"class":782}," \"better-sqlite3\"",[250,5073,1379],{"class":912},[250,5075,5076,5078,5081,5083,5086],{"class":252,"line":113},[250,5077,1763],{"class":786},[250,5079,5080],{"class":912}," { drizzle } ",[250,5082,1769],{"class":786},[250,5084,5085],{"class":782}," \"drizzle-orm\u002Fbetter-sqlite3\"",[250,5087,1379],{"class":912},[250,5089,5090,5092,5095,5098,5101,5103,5106],{"class":252,"line":110},[250,5091,1763],{"class":786},[250,5093,5094],{"class":778}," *",[250,5096,5097],{"class":786}," as",[250,5099,5100],{"class":912}," schema ",[250,5102,1769],{"class":786},[250,5104,5105],{"class":782}," \".\u002Fschema\"",[250,5107,1379],{"class":912},[250,5109,5110],{"class":252,"line":269},[250,5111,795],{"emptyLinePlaceholder":129},[250,5113,5114,5116,5119,5121,5123,5126,5128,5131],{"class":252,"line":275},[250,5115,1181],{"class":786},[250,5117,5118],{"class":778}," sqlite",[250,5120,1187],{"class":786},[250,5122,1568],{"class":786},[250,5124,5125],{"class":774}," Database",[250,5127,1434],{"class":912},[250,5129,5130],{"class":782},"\"brewstop.db\"",[250,5132,1885],{"class":912},[250,5134,5135,5137,5139,5142,5144,5147],{"class":252,"line":281},[250,5136,1019],{"class":786},[250,5138,4438],{"class":786},[250,5140,5141],{"class":778}," db",[250,5143,1187],{"class":786},[250,5145,5146],{"class":774}," drizzle",[250,5148,5149],{"class":912},"(sqlite, { schema });\n",[250,5151,5152],{"class":252,"line":287},[250,5153,795],{"emptyLinePlaceholder":129},[250,5155,5156],{"class":252,"line":293},[250,5157,5158],{"class":768},"\u002F\u002F Initialize tables on startup\n",[250,5160,5161,5163,5165,5168],{"class":252,"line":299},[250,5162,1019],{"class":786},[250,5164,1845],{"class":786},[250,5166,5167],{"class":774}," initializeDatabase",[250,5169,1851],{"class":912},[250,5171,5172,5175,5178,5180],{"class":252,"line":132},[250,5173,5174],{"class":912},"  sqlite.",[250,5176,5177],{"class":774},"exec",[250,5179,1434],{"class":912},[250,5181,5182],{"class":782},"`\n",[250,5184,5185],{"class":252,"line":310},[250,5186,5187],{"class":782},"    CREATE TABLE IF NOT EXISTS menu_items (\n",[250,5189,5190],{"class":252,"line":316},[250,5191,5192],{"class":782},"      id TEXT PRIMARY KEY,\n",[250,5194,5195],{"class":252,"line":322},[250,5196,5197],{"class":782},"      name TEXT NOT NULL,\n",[250,5199,5200],{"class":252,"line":328},[250,5201,5202],{"class":782},"      description TEXT,\n",[250,5204,5205],{"class":252,"line":334},[250,5206,5207],{"class":782},"      price REAL NOT NULL,\n",[250,5209,5210],{"class":252,"line":340},[250,5211,5212],{"class":782},"      category TEXT NOT NULL,\n",[250,5214,5215],{"class":252,"line":346},[250,5216,5217],{"class":782},"      available INTEGER DEFAULT 1,\n",[250,5219,5220],{"class":252,"line":352},[250,5221,5222],{"class":782},"      created_at INTEGER DEFAULT (strftime('%s', 'now'))\n",[250,5224,5225],{"class":252,"line":358},[250,5226,2210],{"class":782},[250,5228,5229],{"class":252,"line":364},[250,5230,795],{"emptyLinePlaceholder":129},[250,5232,5233],{"class":252,"line":370},[250,5234,5235],{"class":782},"    CREATE TABLE IF NOT EXISTS orders (\n",[250,5237,5238],{"class":252,"line":376},[250,5239,5192],{"class":782},[250,5241,5242],{"class":252,"line":382},[250,5243,5244],{"class":782},"      status TEXT NOT NULL DEFAULT 'pending',\n",[250,5246,5247],{"class":252,"line":388},[250,5248,5249],{"class":782},"      customer_name TEXT,\n",[250,5251,5252],{"class":252,"line":393},[250,5253,5254],{"class":782},"      total REAL NOT NULL,\n",[250,5256,5257],{"class":252,"line":399},[250,5258,5259],{"class":782},"      created_at INTEGER DEFAULT (strftime('%s', 'now')),\n",[250,5261,5262],{"class":252,"line":405},[250,5263,5264],{"class":782},"      updated_at INTEGER DEFAULT (strftime('%s', 'now'))\n",[250,5266,5267],{"class":252,"line":410},[250,5268,2210],{"class":782},[250,5270,5271],{"class":252,"line":415},[250,5272,795],{"emptyLinePlaceholder":129},[250,5274,5275],{"class":252,"line":420},[250,5276,5277],{"class":782},"    CREATE TABLE IF NOT EXISTS order_items (\n",[250,5279,5280],{"class":252,"line":426},[250,5281,5192],{"class":782},[250,5283,5284],{"class":252,"line":431},[250,5285,5286],{"class":782},"      order_id TEXT NOT NULL,\n",[250,5288,5289],{"class":252,"line":436},[250,5290,5291],{"class":782},"      menu_item_id TEXT NOT NULL,\n",[250,5293,5294],{"class":252,"line":442},[250,5295,5296],{"class":782},"      quantity INTEGER DEFAULT 1,\n",[250,5298,5299],{"class":252,"line":447},[250,5300,5301],{"class":782},"      unit_price REAL NOT NULL,\n",[250,5303,5304],{"class":252,"line":453},[250,5305,5306],{"class":782},"      FOREIGN KEY (order_id) REFERENCES orders(id),\n",[250,5308,5309],{"class":252,"line":459},[250,5310,5311],{"class":782},"      FOREIGN KEY (menu_item_id) REFERENCES menu_items(id)\n",[250,5313,5314],{"class":252,"line":465},[250,5315,2210],{"class":782},[250,5317,5318,5321],{"class":252,"line":471},[250,5319,5320],{"class":782},"  `",[250,5322,1885],{"class":912},[250,5324,5325],{"class":252,"line":2201},[250,5326,1053],{"class":912},[250,5328,5329,5331,5333,5335,5338],{"class":252,"line":2207},[250,5330,1856],{"class":912},[250,5332,1859],{"class":774},[250,5334,1434],{"class":912},[250,5336,5337],{"class":782},"\"✅ Database initialized\"",[250,5339,1885],{"class":912},[250,5341,5342],{"class":252,"line":2213},[250,5343,991],{"class":912},[72,5345],{},[31,5347,5349],{"id":5348},"step-5-seed-some-data","Step 5: Seed Some Data",[20,5351,5352],{},"Let's add an endpoint to populate our menu with sample data.",[20,5354,1092,5355,1007],{},[39,5356,5357],{},"server\u002Fapi\u002Fseed.post.ts",[47,5359,5361],{"className":1010,"code":5360,"filename":5357,"language":1012,"meta":55,"style":55},"import { db } from \"..\u002Fdb\";\nimport { menuItems } from \"..\u002Fdb\u002Fschema\";\n\nconst defaultMenuItems = [\n  { id: \"latte\", name: \"Latte\", description: \"Smooth espresso with steamed milk\", price: 4.5, category: \"coffee\" },\n  { id: \"espresso\", name: \"Espresso\", description: \"Rich, bold espresso shot\", price: 3.0, category: \"coffee\" },\n  { id: \"americano\", name: \"Americano\", description: \"Espresso with hot water\", price: 3.5, category: \"coffee\" },\n  { id: \"cappuccino\", name: \"Cappuccino\", description: \"Espresso with equal parts milk foam\", price: 4.5, category: \"coffee\" },\n  { id: \"chai\", name: \"Chai Tea\", description: \"Spiced black tea with milk\", price: 4.0, category: \"tea\" },\n  { id: \"green-tea\", name: \"Green Tea\", description: \"Organic Japanese green tea\", price: 3.5, category: \"tea\" },\n  { id: \"croissant\", name: \"Croissant\", description: \"Buttery French pastry\", price: 3.5, category: \"food\" },\n  { id: \"muffin\", name: \"Blueberry Muffin\", description: \"Freshly baked muffin\", price: 3.0, category: \"food\" },\n  { id: \"bagel\", name: \"Bagel with Cream Cheese\", description: \"Toasted bagel with cream cheese\", price: 4.0, category: \"food\" },\n];\n\nexport default defineEventHandler(async () => {\n  \u002F\u002F Clear existing menu items\n  await db.delete(menuItems).run();\n  \n  \u002F\u002F Insert default items\n  for (const item of defaultMenuItems) {\n    await db.insert(menuItems).values({\n      ...item,\n      available: true,\n    });\n  }\n  \n  return { message: \"Menu seeded successfully\", count: defaultMenuItems.length };\n});\n",[39,5362,5363,5377,5391,5395,5406,5433,5459,5486,5513,5539,5566,5592,5619,5646,5650,5654,5672,5677,5695,5699,5704,5721,5738,5746,5755,5759,5763,5767,5785],{"__ignoreMap":55},[250,5364,5365,5367,5370,5372,5375],{"class":252,"line":253},[250,5366,1763],{"class":786},[250,5368,5369],{"class":912}," { db } ",[250,5371,1769],{"class":786},[250,5373,5374],{"class":782}," \"..\u002Fdb\"",[250,5376,1379],{"class":912},[250,5378,5379,5381,5384,5386,5389],{"class":252,"line":113},[250,5380,1763],{"class":786},[250,5382,5383],{"class":912}," { menuItems } ",[250,5385,1769],{"class":786},[250,5387,5388],{"class":782}," \"..\u002Fdb\u002Fschema\"",[250,5390,1379],{"class":912},[250,5392,5393],{"class":252,"line":110},[250,5394,795],{"emptyLinePlaceholder":129},[250,5396,5397,5399,5402,5404],{"class":252,"line":269},[250,5398,1181],{"class":786},[250,5400,5401],{"class":778}," defaultMenuItems",[250,5403,1187],{"class":786},[250,5405,1190],{"class":912},[250,5407,5408,5410,5413,5415,5417,5420,5423,5425,5427,5429,5431],{"class":252,"line":275},[250,5409,1195],{"class":912},[250,5411,5412],{"class":782},"\"latte\"",[250,5414,1201],{"class":912},[250,5416,1204],{"class":782},[250,5418,5419],{"class":912},", description: ",[250,5421,5422],{"class":782},"\"Smooth espresso with steamed milk\"",[250,5424,1207],{"class":912},[250,5426,1210],{"class":778},[250,5428,1213],{"class":912},[250,5430,1216],{"class":782},[250,5432,1219],{"class":912},[250,5434,5435,5437,5440,5442,5444,5446,5449,5451,5453,5455,5457],{"class":252,"line":281},[250,5436,1195],{"class":912},[250,5438,5439],{"class":782},"\"espresso\"",[250,5441,1201],{"class":912},[250,5443,1231],{"class":782},[250,5445,5419],{"class":912},[250,5447,5448],{"class":782},"\"Rich, bold espresso shot\"",[250,5450,1207],{"class":912},[250,5452,1236],{"class":778},[250,5454,1213],{"class":912},[250,5456,1216],{"class":782},[250,5458,1219],{"class":912},[250,5460,5461,5463,5466,5468,5471,5473,5476,5478,5480,5482,5484],{"class":252,"line":287},[250,5462,1195],{"class":912},[250,5464,5465],{"class":782},"\"americano\"",[250,5467,1201],{"class":912},[250,5469,5470],{"class":782},"\"Americano\"",[250,5472,5419],{"class":912},[250,5474,5475],{"class":782},"\"Espresso with hot water\"",[250,5477,1207],{"class":912},[250,5479,1259],{"class":778},[250,5481,1213],{"class":912},[250,5483,1216],{"class":782},[250,5485,1219],{"class":912},[250,5487,5488,5490,5493,5495,5498,5500,5503,5505,5507,5509,5511],{"class":252,"line":293},[250,5489,1195],{"class":912},[250,5491,5492],{"class":782},"\"cappuccino\"",[250,5494,1201],{"class":912},[250,5496,5497],{"class":782},"\"Cappuccino\"",[250,5499,5419],{"class":912},[250,5501,5502],{"class":782},"\"Espresso with equal parts milk foam\"",[250,5504,1207],{"class":912},[250,5506,1210],{"class":778},[250,5508,1213],{"class":912},[250,5510,1216],{"class":782},[250,5512,1219],{"class":912},[250,5514,5515,5517,5520,5522,5524,5526,5529,5531,5533,5535,5537],{"class":252,"line":299},[250,5516,1195],{"class":912},[250,5518,5519],{"class":782},"\"chai\"",[250,5521,1201],{"class":912},[250,5523,1278],{"class":782},[250,5525,5419],{"class":912},[250,5527,5528],{"class":782},"\"Spiced black tea with milk\"",[250,5530,1207],{"class":912},[250,5532,1283],{"class":778},[250,5534,1213],{"class":912},[250,5536,1288],{"class":782},[250,5538,1219],{"class":912},[250,5540,5541,5543,5546,5548,5551,5553,5556,5558,5560,5562,5564],{"class":252,"line":132},[250,5542,1195],{"class":912},[250,5544,5545],{"class":782},"\"green-tea\"",[250,5547,1201],{"class":912},[250,5549,5550],{"class":782},"\"Green Tea\"",[250,5552,5419],{"class":912},[250,5554,5555],{"class":782},"\"Organic Japanese green tea\"",[250,5557,1207],{"class":912},[250,5559,1259],{"class":778},[250,5561,1213],{"class":912},[250,5563,1288],{"class":782},[250,5565,1219],{"class":912},[250,5567,5568,5570,5573,5575,5577,5579,5582,5584,5586,5588,5590],{"class":252,"line":310},[250,5569,1195],{"class":912},[250,5571,5572],{"class":782},"\"croissant\"",[250,5574,1201],{"class":912},[250,5576,1254],{"class":782},[250,5578,5419],{"class":912},[250,5580,5581],{"class":782},"\"Buttery French pastry\"",[250,5583,1207],{"class":912},[250,5585,1259],{"class":778},[250,5587,1213],{"class":912},[250,5589,1264],{"class":782},[250,5591,1219],{"class":912},[250,5593,5594,5596,5599,5601,5604,5606,5609,5611,5613,5615,5617],{"class":252,"line":316},[250,5595,1195],{"class":912},[250,5597,5598],{"class":782},"\"muffin\"",[250,5600,1201],{"class":912},[250,5602,5603],{"class":782},"\"Blueberry Muffin\"",[250,5605,5419],{"class":912},[250,5607,5608],{"class":782},"\"Freshly baked muffin\"",[250,5610,1207],{"class":912},[250,5612,1236],{"class":778},[250,5614,1213],{"class":912},[250,5616,1264],{"class":782},[250,5618,1219],{"class":912},[250,5620,5621,5623,5626,5628,5631,5633,5636,5638,5640,5642,5644],{"class":252,"line":322},[250,5622,1195],{"class":912},[250,5624,5625],{"class":782},"\"bagel\"",[250,5627,1201],{"class":912},[250,5629,5630],{"class":782},"\"Bagel with Cream Cheese\"",[250,5632,5419],{"class":912},[250,5634,5635],{"class":782},"\"Toasted bagel with cream cheese\"",[250,5637,1207],{"class":912},[250,5639,1283],{"class":778},[250,5641,1213],{"class":912},[250,5643,1264],{"class":782},[250,5645,1219],{"class":912},[250,5647,5648],{"class":252,"line":328},[250,5649,1317],{"class":912},[250,5651,5652],{"class":252,"line":334},[250,5653,795],{"emptyLinePlaceholder":129},[250,5655,5656,5658,5660,5662,5664,5666,5668,5670],{"class":252,"line":340},[250,5657,1019],{"class":786},[250,5659,1022],{"class":786},[250,5661,1109],{"class":774},[250,5663,1434],{"class":912},[250,5665,1437],{"class":786},[250,5667,2015],{"class":912},[250,5669,1115],{"class":786},[250,5671,1118],{"class":912},[250,5673,5674],{"class":252,"line":346},[250,5675,5676],{"class":768},"  \u002F\u002F Clear existing menu items\n",[250,5678,5679,5681,5684,5687,5690,5693],{"class":252,"line":352},[250,5680,1565],{"class":786},[250,5682,5683],{"class":912}," db.",[250,5685,5686],{"class":774},"delete",[250,5688,5689],{"class":912},"(menuItems).",[250,5691,5692],{"class":774},"run",[250,5694,1906],{"class":912},[250,5696,5697],{"class":252,"line":358},[250,5698,1053],{"class":912},[250,5700,5701],{"class":252,"line":364},[250,5702,5703],{"class":768},"  \u002F\u002F Insert default items\n",[250,5705,5706,5708,5710,5712,5715,5718],{"class":252,"line":370},[250,5707,1944],{"class":786},[250,5709,1440],{"class":912},[250,5711,1181],{"class":786},[250,5713,5714],{"class":778}," item",[250,5716,5717],{"class":786}," of",[250,5719,5720],{"class":912}," defaultMenuItems) {\n",[250,5722,5723,5726,5728,5731,5733,5736],{"class":252,"line":376},[250,5724,5725],{"class":786},"    await",[250,5727,5683],{"class":912},[250,5729,5730],{"class":774},"insert",[250,5732,5689],{"class":912},[250,5734,5735],{"class":774},"values",[250,5737,1028],{"class":912},[250,5739,5740,5743],{"class":252,"line":382},[250,5741,5742],{"class":786},"      ...",[250,5744,5745],{"class":912},"item,\n",[250,5747,5748,5751,5753],{"class":252,"line":388},[250,5749,5750],{"class":912},"      available: ",[250,5752,1066],{"class":778},[250,5754,927],{"class":912},[250,5756,5757],{"class":252,"line":393},[250,5758,1547],{"class":912},[250,5760,5761],{"class":252,"line":399},[250,5762,986],{"class":912},[250,5764,5765],{"class":252,"line":405},[250,5766,1053],{"class":912},[250,5768,5769,5771,5774,5777,5780,5782],{"class":252,"line":410},[250,5770,1123],{"class":786},[250,5772,5773],{"class":912}," { message: ",[250,5775,5776],{"class":782},"\"Menu seeded successfully\"",[250,5778,5779],{"class":912},", count: defaultMenuItems.",[250,5781,1503],{"class":778},[250,5783,5784],{"class":912}," };\n",[250,5786,5787],{"class":252,"line":415},[250,5788,1077],{"class":912},[72,5790],{},[31,5792,5794],{"id":5793},"step-6-create-api-endpoints","Step 6: Create API Endpoints",[2459,5796,5798],{"id":5797},"get-menu","Get Menu",[20,5800,1092,5801,1007],{},[39,5802,5803],{},"server\u002Fapi\u002Fmenu.get.ts",[47,5805,5807],{"className":1010,"code":5806,"filename":5803,"language":1012,"meta":55,"style":55},"import { db } from \"..\u002Fdb\";\nimport { menuItems } from \"..\u002Fdb\u002Fschema\";\n\nexport default defineEventHandler(async () => {\n  const items = await db.select().from(menuItems).where(menuItems.available);\n  return { items };\n});\n",[39,5808,5809,5821,5833,5837,5855,5883,5890],{"__ignoreMap":55},[250,5810,5811,5813,5815,5817,5819],{"class":252,"line":253},[250,5812,1763],{"class":786},[250,5814,5369],{"class":912},[250,5816,1769],{"class":786},[250,5818,5374],{"class":782},[250,5820,1379],{"class":912},[250,5822,5823,5825,5827,5829,5831],{"class":252,"line":113},[250,5824,1763],{"class":786},[250,5826,5383],{"class":912},[250,5828,1769],{"class":786},[250,5830,5388],{"class":782},[250,5832,1379],{"class":912},[250,5834,5835],{"class":252,"line":110},[250,5836,795],{"emptyLinePlaceholder":129},[250,5838,5839,5841,5843,5845,5847,5849,5851,5853],{"class":252,"line":269},[250,5840,1019],{"class":786},[250,5842,1022],{"class":786},[250,5844,1109],{"class":774},[250,5846,1434],{"class":912},[250,5848,1437],{"class":786},[250,5850,2015],{"class":912},[250,5852,1115],{"class":786},[250,5854,1118],{"class":912},[250,5856,5857,5859,5862,5864,5866,5868,5871,5873,5875,5877,5880],{"class":252,"line":275},[250,5858,1455],{"class":786},[250,5860,5861],{"class":778}," items",[250,5863,1187],{"class":786},[250,5865,1463],{"class":786},[250,5867,5683],{"class":912},[250,5869,5870],{"class":774},"select",[250,5872,1647],{"class":912},[250,5874,1769],{"class":774},[250,5876,5689],{"class":912},[250,5878,5879],{"class":774},"where",[250,5881,5882],{"class":912},"(menuItems.available);\n",[250,5884,5885,5887],{"class":252,"line":281},[250,5886,1123],{"class":786},[250,5888,5889],{"class":912}," { items };\n",[250,5891,5892],{"class":252,"line":287},[250,5893,1077],{"class":912},[2459,5895,5897],{"id":5896},"get-single-menu-item","Get Single Menu Item",[20,5899,1092,5900,1007],{},[39,5901,5902],{},"server\u002Fapi\u002Fmenu\u002F[id].get.ts",[47,5904,5906],{"className":1010,"code":5905,"filename":5902,"language":1012,"meta":55,"style":55},"import { db } from \"..\u002Fdb\";\nimport { menuItems } from \"..\u002Fdb\u002Fschema\";\n\nexport default defineEventHandler(async (event) => {\n  const id = getRouterParam(event, \"id\");\n  \n  if (!id) {\n    throw createError({\n      statusCode: 400,\n      statusMessage: \"Menu item ID is required\",\n    });\n  }\n  \n  const item = await db.select().from(menuItems).where(menuItems.id.equals(id)).get();\n  \n  if (!item) {\n    throw createError({\n      statusCode: 404,\n      statusMessage: \"Menu item not found\",\n    });\n  }\n  \n  return item;\n});\n",[39,5907,5908,5920,5932,5936,5958,5977,5981,5992,6000,6008,6017,6021,6025,6029,6065,6069,6080,6088,6097,6106,6110,6114,6118,6125],{"__ignoreMap":55},[250,5909,5910,5912,5914,5916,5918],{"class":252,"line":253},[250,5911,1763],{"class":786},[250,5913,5369],{"class":912},[250,5915,1769],{"class":786},[250,5917,5374],{"class":782},[250,5919,1379],{"class":912},[250,5921,5922,5924,5926,5928,5930],{"class":252,"line":113},[250,5923,1763],{"class":786},[250,5925,5383],{"class":912},[250,5927,1769],{"class":786},[250,5929,5388],{"class":782},[250,5931,1379],{"class":912},[250,5933,5934],{"class":252,"line":110},[250,5935,795],{"emptyLinePlaceholder":129},[250,5937,5938,5940,5942,5944,5946,5948,5950,5952,5954,5956],{"class":252,"line":269},[250,5939,1019],{"class":786},[250,5941,1022],{"class":786},[250,5943,1109],{"class":774},[250,5945,1434],{"class":912},[250,5947,1437],{"class":786},[250,5949,1440],{"class":912},[250,5951,1443],{"class":1370},[250,5953,1446],{"class":912},[250,5955,1115],{"class":786},[250,5957,1118],{"class":912},[250,5959,5960,5962,5965,5967,5970,5973,5975],{"class":252,"line":275},[250,5961,1455],{"class":786},[250,5963,5964],{"class":778}," id",[250,5966,1187],{"class":786},[250,5968,5969],{"class":774}," getRouterParam",[250,5971,5972],{"class":912},"(event, ",[250,5974,4466],{"class":782},[250,5976,1885],{"class":912},[250,5978,5979],{"class":252,"line":281},[250,5980,1053],{"class":912},[250,5982,5983,5985,5987,5989],{"class":252,"line":287},[250,5984,1486],{"class":786},[250,5986,1440],{"class":912},[250,5988,1491],{"class":786},[250,5990,5991],{"class":912},"id) {\n",[250,5993,5994,5996,5998],{"class":252,"line":293},[250,5995,1517],{"class":786},[250,5997,1520],{"class":774},[250,5999,1028],{"class":912},[250,6001,6002,6004,6006],{"class":252,"line":299},[250,6003,1527],{"class":912},[250,6005,1530],{"class":778},[250,6007,927],{"class":912},[250,6009,6010,6012,6015],{"class":252,"line":132},[250,6011,1537],{"class":912},[250,6013,6014],{"class":782},"\"Menu item ID is required\"",[250,6016,927],{"class":912},[250,6018,6019],{"class":252,"line":310},[250,6020,1547],{"class":912},[250,6022,6023],{"class":252,"line":316},[250,6024,986],{"class":912},[250,6026,6027],{"class":252,"line":322},[250,6028,1053],{"class":912},[250,6030,6031,6033,6035,6037,6039,6041,6043,6045,6047,6049,6051,6054,6057,6060,6063],{"class":252,"line":328},[250,6032,1455],{"class":786},[250,6034,5714],{"class":778},[250,6036,1187],{"class":786},[250,6038,1463],{"class":786},[250,6040,5683],{"class":912},[250,6042,5870],{"class":774},[250,6044,1647],{"class":912},[250,6046,1769],{"class":774},[250,6048,5689],{"class":912},[250,6050,5879],{"class":774},[250,6052,6053],{"class":912},"(menuItems.id.",[250,6055,6056],{"class":774},"equals",[250,6058,6059],{"class":912},"(id)).",[250,6061,6062],{"class":774},"get",[250,6064,1906],{"class":912},[250,6066,6067],{"class":252,"line":334},[250,6068,1053],{"class":912},[250,6070,6071,6073,6075,6077],{"class":252,"line":340},[250,6072,1486],{"class":786},[250,6074,1440],{"class":912},[250,6076,1491],{"class":786},[250,6078,6079],{"class":912},"item) {\n",[250,6081,6082,6084,6086],{"class":252,"line":346},[250,6083,1517],{"class":786},[250,6085,1520],{"class":774},[250,6087,1028],{"class":912},[250,6089,6090,6092,6095],{"class":252,"line":352},[250,6091,1527],{"class":912},[250,6093,6094],{"class":778},"404",[250,6096,927],{"class":912},[250,6098,6099,6101,6104],{"class":252,"line":358},[250,6100,1537],{"class":912},[250,6102,6103],{"class":782},"\"Menu item not found\"",[250,6105,927],{"class":912},[250,6107,6108],{"class":252,"line":364},[250,6109,1547],{"class":912},[250,6111,6112],{"class":252,"line":370},[250,6113,986],{"class":912},[250,6115,6116],{"class":252,"line":376},[250,6117,1053],{"class":912},[250,6119,6120,6122],{"class":252,"line":382},[250,6121,1123],{"class":786},[250,6123,6124],{"class":912}," item;\n",[250,6126,6127],{"class":252,"line":388},[250,6128,1077],{"class":912},[2459,6130,6132],{"id":6131},"create-order","Create Order",[20,6134,6135],{},"This is where Drizzle really shines—let's create a proper order with related items.",[20,6137,1092,6138,1007],{},[39,6139,1353],{},[47,6141,6143],{"className":1010,"code":6142,"filename":1353,"language":1012,"meta":55,"style":55},"import { db } from \"..\u002Fdb\";\nimport { orders, orderItems, menuItems } from \"..\u002Fdb\u002Fschema\";\nimport { eq } from \"drizzle-orm\";\n\ninterface OrderItemInput {\n  menuItemId: string;\n  quantity: number;\n}\n\nexport default defineEventHandler(async (event) => {\n  const body = await readBody(event);\n  \n  \u002F\u002F Validate input\n  if (!body.items || !Array.isArray(body.items) || body.items.length === 0) {\n    throw createError({\n      statusCode: 400,\n      statusMessage: \"Order must contain at least one item\",\n    });\n  }\n  \n  \u002F\u002F Calculate total and fetch menu item prices\n  let total = 0;\n  const orderItemInputs: OrderItemInput[] = [];\n  \n  for (const item of body.items) {\n    const menuItem = await db\n      .select()\n      .from(menuItems)\n      .where(eq(menuItems.id, item.menuItemId))\n      .get();\n    \n    if (!menuItem) {\n      throw createError({\n        statusCode: 400,\n        statusMessage: `Menu item ${item.menuItemId} not found`,\n      });\n    }\n    \n    if (!menuItem.available) {\n      throw createError({\n        statusCode: 400,\n        statusMessage: `Menu item ${menuItem.name} is not available`,\n      });\n    }\n    \n    total += menuItem.price * item.quantity;\n    orderItemInputs.push({\n      menuItemId: item.menuItemId,\n      quantity: item.quantity,\n    });\n  }\n  \n  \u002F\u002F Create the order\n  const orderId = crypto.randomUUID();\n  const now = Date.now();\n  \n  await db.insert(orders).values({\n    id: orderId,\n    customerName: body.customerName || \"Guest\",\n    status: \"pending\",\n    total,\n    createdAt: new Date(now),\n    updatedAt: new Date(now),\n  });\n  \n  \u002F\u002F Create order items\n  for (const input of orderItemInputs) {\n    const menuItem = await db\n      .select()\n      .from(menuItems)\n      .where(eq(menuItems.id, input.menuItemId))\n      .get();\n    \n    await db.insert(orderItems).values({\n      id: crypto.randomUUID(),\n      orderId,\n      menuItemId: input.menuItemId,\n      quantity: input.quantity,\n      unitPrice: menuItem!.price,\n    });\n  }\n  \n  \u002F\u002F Fetch the complete order\n  const createdOrder = await db\n    .select()\n    .from(orders)\n    .where(eq(orders.id, orderId))\n    .get();\n  \n  const items = await db\n    .select()\n    .from(orderItems)\n    .where(eq(orderItems.orderId, orderId));\n  \n  return {\n    ...createdOrder,\n    items,\n  };\n});\n",[39,6144,6145,6157,6170,6183,6187,6196,6207,6217,6221,6225,6247,6262,6266,6271,6309,6317,6325,6333,6337,6341,6345,6350,6363,6380,6384,6399,6414,6423,6432,6446,6454,6459,6471,6480,6489,6510,6515,6519,6523,6534,6542,6550,6569,6573,6577,6581,6598,6607,6612,6617,6621,6625,6629,6634,6650,6665,6670,6686,6692,6705,6714,6720,6732,6744,6750,6755,6761,6778,6791,6800,6809,6823,6832,6837,6853,6863,6869,6875,6881,6892,6897,6902,6907,6913,6927,6936,6946,6960,6969,6974,6987,6996,7006,7020,7025,7032,7041,7047,7052],{"__ignoreMap":55},[250,6146,6147,6149,6151,6153,6155],{"class":252,"line":253},[250,6148,1763],{"class":786},[250,6150,5369],{"class":912},[250,6152,1769],{"class":786},[250,6154,5374],{"class":782},[250,6156,1379],{"class":912},[250,6158,6159,6161,6164,6166,6168],{"class":252,"line":113},[250,6160,1763],{"class":786},[250,6162,6163],{"class":912}," { orders, orderItems, menuItems } ",[250,6165,1769],{"class":786},[250,6167,5388],{"class":782},[250,6169,1379],{"class":912},[250,6171,6172,6174,6177,6179,6181],{"class":252,"line":110},[250,6173,1763],{"class":786},[250,6175,6176],{"class":912}," { eq } ",[250,6178,1769],{"class":786},[250,6180,4420],{"class":782},[250,6182,1379],{"class":912},[250,6184,6185],{"class":252,"line":269},[250,6186,795],{"emptyLinePlaceholder":129},[250,6188,6189,6191,6194],{"class":252,"line":275},[250,6190,1360],{"class":786},[250,6192,6193],{"class":774}," OrderItemInput",[250,6195,1118],{"class":912},[250,6197,6198,6201,6203,6205],{"class":252,"line":281},[250,6199,6200],{"class":1370},"  menuItemId",[250,6202,1007],{"class":786},[250,6204,2506],{"class":778},[250,6206,1379],{"class":912},[250,6208,6209,6211,6213,6215],{"class":252,"line":287},[250,6210,1384],{"class":1370},[250,6212,1007],{"class":786},[250,6214,1376],{"class":778},[250,6216,1379],{"class":912},[250,6218,6219],{"class":252,"line":293},[250,6220,991],{"class":912},[250,6222,6223],{"class":252,"line":299},[250,6224,795],{"emptyLinePlaceholder":129},[250,6226,6227,6229,6231,6233,6235,6237,6239,6241,6243,6245],{"class":252,"line":132},[250,6228,1019],{"class":786},[250,6230,1022],{"class":786},[250,6232,1109],{"class":774},[250,6234,1434],{"class":912},[250,6236,1437],{"class":786},[250,6238,1440],{"class":912},[250,6240,1443],{"class":1370},[250,6242,1446],{"class":912},[250,6244,1115],{"class":786},[250,6246,1118],{"class":912},[250,6248,6249,6251,6253,6255,6257,6259],{"class":252,"line":310},[250,6250,1455],{"class":786},[250,6252,1458],{"class":778},[250,6254,1187],{"class":786},[250,6256,1463],{"class":786},[250,6258,1466],{"class":774},[250,6260,6261],{"class":912},"(event);\n",[250,6263,6264],{"class":252,"line":316},[250,6265,1053],{"class":912},[250,6267,6268],{"class":252,"line":322},[250,6269,6270],{"class":768},"  \u002F\u002F Validate input\n",[250,6272,6273,6275,6277,6279,6282,6284,6287,6290,6293,6296,6298,6301,6303,6305,6307],{"class":252,"line":328},[250,6274,1486],{"class":786},[250,6276,1440],{"class":912},[250,6278,1491],{"class":786},[250,6280,6281],{"class":912},"body.items ",[250,6283,1497],{"class":786},[250,6285,6286],{"class":786}," !",[250,6288,6289],{"class":912},"Array.",[250,6291,6292],{"class":774},"isArray",[250,6294,6295],{"class":912},"(body.items) ",[250,6297,1497],{"class":786},[250,6299,6300],{"class":912}," body.items.",[250,6302,1503],{"class":778},[250,6304,1506],{"class":786},[250,6306,1509],{"class":778},[250,6308,1512],{"class":912},[250,6310,6311,6313,6315],{"class":252,"line":334},[250,6312,1517],{"class":786},[250,6314,1520],{"class":774},[250,6316,1028],{"class":912},[250,6318,6319,6321,6323],{"class":252,"line":340},[250,6320,1527],{"class":912},[250,6322,1530],{"class":778},[250,6324,927],{"class":912},[250,6326,6327,6329,6331],{"class":252,"line":346},[250,6328,1537],{"class":912},[250,6330,1540],{"class":782},[250,6332,927],{"class":912},[250,6334,6335],{"class":252,"line":352},[250,6336,1547],{"class":912},[250,6338,6339],{"class":252,"line":358},[250,6340,986],{"class":912},[250,6342,6343],{"class":252,"line":364},[250,6344,1053],{"class":912},[250,6346,6347],{"class":252,"line":370},[250,6348,6349],{"class":768},"  \u002F\u002F Calculate total and fetch menu item prices\n",[250,6351,6352,6354,6357,6359,6361],{"class":252,"line":376},[250,6353,1911],{"class":786},[250,6355,6356],{"class":912}," total ",[250,6358,1416],{"class":786},[250,6360,1509],{"class":778},[250,6362,1379],{"class":912},[250,6364,6365,6367,6370,6372,6374,6376,6378],{"class":252,"line":382},[250,6366,1455],{"class":786},[250,6368,6369],{"class":778}," orderItemInputs",[250,6371,1007],{"class":786},[250,6373,6193],{"class":774},[250,6375,1413],{"class":912},[250,6377,1416],{"class":786},[250,6379,1419],{"class":912},[250,6381,6382],{"class":252,"line":388},[250,6383,1053],{"class":912},[250,6385,6386,6388,6390,6392,6394,6396],{"class":252,"line":393},[250,6387,1944],{"class":786},[250,6389,1440],{"class":912},[250,6391,1181],{"class":786},[250,6393,5714],{"class":778},[250,6395,5717],{"class":786},[250,6397,6398],{"class":912}," body.items) {\n",[250,6400,6401,6404,6407,6409,6411],{"class":252,"line":399},[250,6402,6403],{"class":786},"    const",[250,6405,6406],{"class":778}," menuItem",[250,6408,1187],{"class":786},[250,6410,1463],{"class":786},[250,6412,6413],{"class":912}," db\n",[250,6415,6416,6419,6421],{"class":252,"line":405},[250,6417,6418],{"class":912},"      .",[250,6420,5870],{"class":774},[250,6422,4861],{"class":912},[250,6424,6425,6427,6429],{"class":252,"line":410},[250,6426,6418],{"class":912},[250,6428,1769],{"class":774},[250,6430,6431],{"class":912},"(menuItems)\n",[250,6433,6434,6436,6438,6440,6443],{"class":252,"line":415},[250,6435,6418],{"class":912},[250,6437,5879],{"class":774},[250,6439,1434],{"class":912},[250,6441,6442],{"class":774},"eq",[250,6444,6445],{"class":912},"(menuItems.id, item.menuItemId))\n",[250,6447,6448,6450,6452],{"class":252,"line":420},[250,6449,6418],{"class":912},[250,6451,6062],{"class":774},[250,6453,1906],{"class":912},[250,6455,6456],{"class":252,"line":426},[250,6457,6458],{"class":912},"    \n",[250,6460,6461,6464,6466,6468],{"class":252,"line":431},[250,6462,6463],{"class":786},"    if",[250,6465,1440],{"class":912},[250,6467,1491],{"class":786},[250,6469,6470],{"class":912},"menuItem) {\n",[250,6472,6473,6476,6478],{"class":252,"line":436},[250,6474,6475],{"class":786},"      throw",[250,6477,1520],{"class":774},[250,6479,1028],{"class":912},[250,6481,6482,6485,6487],{"class":252,"line":442},[250,6483,6484],{"class":912},"        statusCode: ",[250,6486,1530],{"class":778},[250,6488,927],{"class":912},[250,6490,6491,6494,6497,6500,6502,6505,6508],{"class":252,"line":447},[250,6492,6493],{"class":912},"        statusMessage: ",[250,6495,6496],{"class":782},"`Menu item ${",[250,6498,6499],{"class":912},"item",[250,6501,2230],{"class":782},[250,6503,6504],{"class":912},"menuItemId",[250,6506,6507],{"class":782},"} not found`",[250,6509,927],{"class":912},[250,6511,6512],{"class":252,"line":453},[250,6513,6514],{"class":912},"      });\n",[250,6516,6517],{"class":252,"line":459},[250,6518,3684],{"class":912},[250,6520,6521],{"class":252,"line":465},[250,6522,6458],{"class":912},[250,6524,6525,6527,6529,6531],{"class":252,"line":471},[250,6526,6463],{"class":786},[250,6528,1440],{"class":912},[250,6530,1491],{"class":786},[250,6532,6533],{"class":912},"menuItem.available) {\n",[250,6535,6536,6538,6540],{"class":252,"line":2201},[250,6537,6475],{"class":786},[250,6539,1520],{"class":774},[250,6541,1028],{"class":912},[250,6543,6544,6546,6548],{"class":252,"line":2207},[250,6545,6484],{"class":912},[250,6547,1530],{"class":778},[250,6549,927],{"class":912},[250,6551,6552,6554,6556,6559,6561,6564,6567],{"class":252,"line":2213},[250,6553,6493],{"class":912},[250,6555,6496],{"class":782},[250,6557,6558],{"class":912},"menuItem",[250,6560,2230],{"class":782},[250,6562,6563],{"class":912},"name",[250,6565,6566],{"class":782},"} is not available`",[250,6568,927],{"class":912},[250,6570,6571],{"class":252,"line":2218},[250,6572,6514],{"class":912},[250,6574,6575],{"class":252,"line":2223},[250,6576,3684],{"class":912},[250,6578,6579],{"class":252,"line":2239},[250,6580,6458],{"class":912},[250,6582,6583,6586,6589,6592,6595],{"class":252,"line":2244},[250,6584,6585],{"class":912},"    total ",[250,6587,6588],{"class":786},"+=",[250,6590,6591],{"class":912}," menuItem.price ",[250,6593,6594],{"class":786},"*",[250,6596,6597],{"class":912}," item.quantity;\n",[250,6599,6600,6603,6605],{"class":252,"line":2267},[250,6601,6602],{"class":912},"    orderItemInputs.",[250,6604,1668],{"class":774},[250,6606,1028],{"class":912},[250,6608,6609],{"class":252,"line":2301},[250,6610,6611],{"class":912},"      menuItemId: item.menuItemId,\n",[250,6613,6614],{"class":252,"line":2306},[250,6615,6616],{"class":912},"      quantity: item.quantity,\n",[250,6618,6619],{"class":252,"line":2320},[250,6620,1547],{"class":912},[250,6622,6623],{"class":252,"line":2340},[250,6624,986],{"class":912},[250,6626,6627],{"class":252,"line":2360},[250,6628,1053],{"class":912},[250,6630,6631],{"class":252,"line":2397},[250,6632,6633],{"class":768},"  \u002F\u002F Create the order\n",[250,6635,6636,6638,6641,6643,6646,6648],{"class":252,"line":2402},[250,6637,1455],{"class":786},[250,6639,6640],{"class":778}," orderId",[250,6642,1187],{"class":786},[250,6644,6645],{"class":912}," crypto.",[250,6647,1616],{"class":774},[250,6649,1906],{"class":912},[250,6651,6652,6654,6657,6659,6661,6663],{"class":252,"line":2407},[250,6653,1455],{"class":786},[250,6655,6656],{"class":778}," now",[250,6658,1187],{"class":786},[250,6660,1901],{"class":912},[250,6662,1153],{"class":774},[250,6664,1906],{"class":912},[250,6666,6668],{"class":252,"line":6667},56,[250,6669,1053],{"class":912},[250,6671,6673,6675,6677,6679,6682,6684],{"class":252,"line":6672},57,[250,6674,1565],{"class":786},[250,6676,5683],{"class":912},[250,6678,5730],{"class":774},[250,6680,6681],{"class":912},"(orders).",[250,6683,5735],{"class":774},[250,6685,1028],{"class":912},[250,6687,6689],{"class":252,"line":6688},58,[250,6690,6691],{"class":912},"    id: orderId,\n",[250,6693,6695,6698,6700,6703],{"class":252,"line":6694},59,[250,6696,6697],{"class":912},"    customerName: body.customerName ",[250,6699,1497],{"class":786},[250,6701,6702],{"class":782}," \"Guest\"",[250,6704,927],{"class":912},[250,6706,6708,6710,6712],{"class":252,"line":6707},60,[250,6709,1628],{"class":912},[250,6711,1631],{"class":782},[250,6713,927],{"class":912},[250,6715,6717],{"class":252,"line":6716},61,[250,6718,6719],{"class":912},"    total,\n",[250,6721,6723,6725,6727,6729],{"class":252,"line":6722},62,[250,6724,1638],{"class":912},[250,6726,1641],{"class":786},[250,6728,1644],{"class":774},[250,6730,6731],{"class":912},"(now),\n",[250,6733,6735,6738,6740,6742],{"class":252,"line":6734},63,[250,6736,6737],{"class":912},"    updatedAt: ",[250,6739,1641],{"class":786},[250,6741,1644],{"class":774},[250,6743,6731],{"class":912},[250,6745,6747],{"class":252,"line":6746},64,[250,6748,6749],{"class":912},"  });\n",[250,6751,6753],{"class":252,"line":6752},65,[250,6754,1053],{"class":912},[250,6756,6758],{"class":252,"line":6757},66,[250,6759,6760],{"class":768},"  \u002F\u002F Create order items\n",[250,6762,6764,6766,6768,6770,6773,6775],{"class":252,"line":6763},67,[250,6765,1944],{"class":786},[250,6767,1440],{"class":912},[250,6769,1181],{"class":786},[250,6771,6772],{"class":778}," input",[250,6774,5717],{"class":786},[250,6776,6777],{"class":912}," orderItemInputs) {\n",[250,6779,6781,6783,6785,6787,6789],{"class":252,"line":6780},68,[250,6782,6403],{"class":786},[250,6784,6406],{"class":778},[250,6786,1187],{"class":786},[250,6788,1463],{"class":786},[250,6790,6413],{"class":912},[250,6792,6794,6796,6798],{"class":252,"line":6793},69,[250,6795,6418],{"class":912},[250,6797,5870],{"class":774},[250,6799,4861],{"class":912},[250,6801,6803,6805,6807],{"class":252,"line":6802},70,[250,6804,6418],{"class":912},[250,6806,1769],{"class":774},[250,6808,6431],{"class":912},[250,6810,6812,6814,6816,6818,6820],{"class":252,"line":6811},71,[250,6813,6418],{"class":912},[250,6815,5879],{"class":774},[250,6817,1434],{"class":912},[250,6819,6442],{"class":774},[250,6821,6822],{"class":912},"(menuItems.id, input.menuItemId))\n",[250,6824,6826,6828,6830],{"class":252,"line":6825},72,[250,6827,6418],{"class":912},[250,6829,6062],{"class":774},[250,6831,1906],{"class":912},[250,6833,6835],{"class":252,"line":6834},73,[250,6836,6458],{"class":912},[250,6838,6840,6842,6844,6846,6849,6851],{"class":252,"line":6839},74,[250,6841,5725],{"class":786},[250,6843,5683],{"class":912},[250,6845,5730],{"class":774},[250,6847,6848],{"class":912},"(orderItems).",[250,6850,5735],{"class":774},[250,6852,1028],{"class":912},[250,6854,6856,6859,6861],{"class":252,"line":6855},75,[250,6857,6858],{"class":912},"      id: crypto.",[250,6860,1616],{"class":774},[250,6862,1156],{"class":912},[250,6864,6866],{"class":252,"line":6865},76,[250,6867,6868],{"class":912},"      orderId,\n",[250,6870,6872],{"class":252,"line":6871},77,[250,6873,6874],{"class":912},"      menuItemId: input.menuItemId,\n",[250,6876,6878],{"class":252,"line":6877},78,[250,6879,6880],{"class":912},"      quantity: input.quantity,\n",[250,6882,6884,6887,6889],{"class":252,"line":6883},79,[250,6885,6886],{"class":912},"      unitPrice: menuItem",[250,6888,1491],{"class":786},[250,6890,6891],{"class":912},".price,\n",[250,6893,6895],{"class":252,"line":6894},80,[250,6896,1547],{"class":912},[250,6898,6900],{"class":252,"line":6899},81,[250,6901,986],{"class":912},[250,6903,6905],{"class":252,"line":6904},82,[250,6906,1053],{"class":912},[250,6908,6910],{"class":252,"line":6909},83,[250,6911,6912],{"class":768},"  \u002F\u002F Fetch the complete order\n",[250,6914,6916,6918,6921,6923,6925],{"class":252,"line":6915},84,[250,6917,1455],{"class":786},[250,6919,6920],{"class":778}," createdOrder",[250,6922,1187],{"class":786},[250,6924,1463],{"class":786},[250,6926,6413],{"class":912},[250,6928,6930,6932,6934],{"class":252,"line":6929},85,[250,6931,4604],{"class":912},[250,6933,5870],{"class":774},[250,6935,4861],{"class":912},[250,6937,6939,6941,6943],{"class":252,"line":6938},86,[250,6940,4604],{"class":912},[250,6942,1769],{"class":774},[250,6944,6945],{"class":912},"(orders)\n",[250,6947,6949,6951,6953,6955,6957],{"class":252,"line":6948},87,[250,6950,4604],{"class":912},[250,6952,5879],{"class":774},[250,6954,1434],{"class":912},[250,6956,6442],{"class":774},[250,6958,6959],{"class":912},"(orders.id, orderId))\n",[250,6961,6963,6965,6967],{"class":252,"line":6962},88,[250,6964,4604],{"class":912},[250,6966,6062],{"class":774},[250,6968,1906],{"class":912},[250,6970,6972],{"class":252,"line":6971},89,[250,6973,1053],{"class":912},[250,6975,6977,6979,6981,6983,6985],{"class":252,"line":6976},90,[250,6978,1455],{"class":786},[250,6980,5861],{"class":778},[250,6982,1187],{"class":786},[250,6984,1463],{"class":786},[250,6986,6413],{"class":912},[250,6988,6990,6992,6994],{"class":252,"line":6989},91,[250,6991,4604],{"class":912},[250,6993,5870],{"class":774},[250,6995,4861],{"class":912},[250,6997,6999,7001,7003],{"class":252,"line":6998},92,[250,7000,4604],{"class":912},[250,7002,1769],{"class":774},[250,7004,7005],{"class":912},"(orderItems)\n",[250,7007,7009,7011,7013,7015,7017],{"class":252,"line":7008},93,[250,7010,4604],{"class":912},[250,7012,5879],{"class":774},[250,7014,1434],{"class":912},[250,7016,6442],{"class":774},[250,7018,7019],{"class":912},"(orderItems.orderId, orderId));\n",[250,7021,7023],{"class":252,"line":7022},94,[250,7024,1053],{"class":912},[250,7026,7028,7030],{"class":252,"line":7027},95,[250,7029,1123],{"class":786},[250,7031,1118],{"class":912},[250,7033,7035,7038],{"class":252,"line":7034},96,[250,7036,7037],{"class":786},"    ...",[250,7039,7040],{"class":912},"createdOrder,\n",[250,7042,7044],{"class":252,"line":7043},97,[250,7045,7046],{"class":912},"    items,\n",[250,7048,7050],{"class":252,"line":7049},98,[250,7051,1161],{"class":912},[250,7053,7055],{"class":252,"line":7054},99,[250,7056,1077],{"class":912},[2459,7058,7060],{"id":7059},"update-order-status","Update Order Status",[20,7062,1092,7063,1007],{},[39,7064,7065],{},"server\u002Fapi\u002Forders\u002F[id].patch.ts",[47,7067,7069],{"className":1010,"code":7068,"filename":7065,"language":1012,"meta":55,"style":55},"import { db } from \"..\u002Fdb\";\nimport { orders } from \"..\u002Fdb\u002Fschema\";\nimport { eq } from \"drizzle-orm\";\n\nconst validStatuses = [\"pending\", \"preparing\", \"ready\", \"completed\", \"cancelled\"];\n\nexport default defineEventHandler(async (event) => {\n  const id = getRouterParam(event, \"id\");\n  const body = await readBody(event);\n  \n  if (!id) {\n    throw createError({\n      statusCode: 400,\n      statusMessage: \"Order ID is required\",\n    });\n  }\n  \n  if (!body.status || !validStatuses.includes(body.status)) {\n    throw createError({\n      statusCode: 400,\n      statusMessage: `Invalid status. Must be one of: ${validStatuses.join(\", \")}`,\n    });\n  }\n  \n  const existingOrder = await db\n    .select()\n    .from(orders)\n    .where(eq(orders.id, id))\n    .get();\n  \n  if (!existingOrder) {\n    throw createError({\n      statusCode: 404,\n      statusMessage: \"Order not found\",\n    });\n  }\n  \n  \u002F\u002F Update the order\n  await db\n    .update(orders)\n    .set({\n      status: body.status,\n      updatedAt: new Date(),\n    })\n    .where(eq(orders.id, id));\n  \n  const updatedOrder = await db\n    .select()\n    .from(orders)\n    .where(eq(orders.id, id))\n    .get();\n  \n  return updatedOrder;\n});\n",[39,7070,7071,7083,7096,7108,7112,7149,7153,7175,7191,7205,7209,7219,7227,7235,7244,7248,7252,7256,7280,7288,7296,7322,7326,7330,7334,7347,7355,7363,7376,7384,7388,7399,7407,7415,7424,7428,7432,7436,7441,7447,7456,7465,7470,7481,7486,7499,7503,7516,7524,7532,7544,7552,7556,7563],{"__ignoreMap":55},[250,7072,7073,7075,7077,7079,7081],{"class":252,"line":253},[250,7074,1763],{"class":786},[250,7076,5369],{"class":912},[250,7078,1769],{"class":786},[250,7080,5374],{"class":782},[250,7082,1379],{"class":912},[250,7084,7085,7087,7090,7092,7094],{"class":252,"line":113},[250,7086,1763],{"class":786},[250,7088,7089],{"class":912}," { orders } ",[250,7091,1769],{"class":786},[250,7093,5388],{"class":782},[250,7095,1379],{"class":912},[250,7097,7098,7100,7102,7104,7106],{"class":252,"line":110},[250,7099,1763],{"class":786},[250,7101,6176],{"class":912},[250,7103,1769],{"class":786},[250,7105,4420],{"class":782},[250,7107,1379],{"class":912},[250,7109,7110],{"class":252,"line":269},[250,7111,795],{"emptyLinePlaceholder":129},[250,7113,7114,7116,7119,7121,7124,7126,7129,7132,7134,7137,7139,7142,7144,7147],{"class":252,"line":275},[250,7115,1181],{"class":786},[250,7117,7118],{"class":778}," validStatuses",[250,7120,1187],{"class":786},[250,7122,7123],{"class":912}," [",[250,7125,1631],{"class":782},[250,7127,7128],{"class":912},", ",[250,7130,7131],{"class":782},"\"preparing\"",[250,7133,7128],{"class":912},[250,7135,7136],{"class":782},"\"ready\"",[250,7138,7128],{"class":912},[250,7140,7141],{"class":782},"\"completed\"",[250,7143,7128],{"class":912},[250,7145,7146],{"class":782},"\"cancelled\"",[250,7148,1317],{"class":912},[250,7150,7151],{"class":252,"line":281},[250,7152,795],{"emptyLinePlaceholder":129},[250,7154,7155,7157,7159,7161,7163,7165,7167,7169,7171,7173],{"class":252,"line":287},[250,7156,1019],{"class":786},[250,7158,1022],{"class":786},[250,7160,1109],{"class":774},[250,7162,1434],{"class":912},[250,7164,1437],{"class":786},[250,7166,1440],{"class":912},[250,7168,1443],{"class":1370},[250,7170,1446],{"class":912},[250,7172,1115],{"class":786},[250,7174,1118],{"class":912},[250,7176,7177,7179,7181,7183,7185,7187,7189],{"class":252,"line":293},[250,7178,1455],{"class":786},[250,7180,5964],{"class":778},[250,7182,1187],{"class":786},[250,7184,5969],{"class":774},[250,7186,5972],{"class":912},[250,7188,4466],{"class":782},[250,7190,1885],{"class":912},[250,7192,7193,7195,7197,7199,7201,7203],{"class":252,"line":299},[250,7194,1455],{"class":786},[250,7196,1458],{"class":778},[250,7198,1187],{"class":786},[250,7200,1463],{"class":786},[250,7202,1466],{"class":774},[250,7204,6261],{"class":912},[250,7206,7207],{"class":252,"line":132},[250,7208,1053],{"class":912},[250,7210,7211,7213,7215,7217],{"class":252,"line":310},[250,7212,1486],{"class":786},[250,7214,1440],{"class":912},[250,7216,1491],{"class":786},[250,7218,5991],{"class":912},[250,7220,7221,7223,7225],{"class":252,"line":316},[250,7222,1517],{"class":786},[250,7224,1520],{"class":774},[250,7226,1028],{"class":912},[250,7228,7229,7231,7233],{"class":252,"line":322},[250,7230,1527],{"class":912},[250,7232,1530],{"class":778},[250,7234,927],{"class":912},[250,7236,7237,7239,7242],{"class":252,"line":328},[250,7238,1537],{"class":912},[250,7240,7241],{"class":782},"\"Order ID is required\"",[250,7243,927],{"class":912},[250,7245,7246],{"class":252,"line":334},[250,7247,1547],{"class":912},[250,7249,7250],{"class":252,"line":340},[250,7251,986],{"class":912},[250,7253,7254],{"class":252,"line":346},[250,7255,1053],{"class":912},[250,7257,7258,7260,7262,7264,7267,7269,7271,7274,7277],{"class":252,"line":352},[250,7259,1486],{"class":786},[250,7261,1440],{"class":912},[250,7263,1491],{"class":786},[250,7265,7266],{"class":912},"body.status ",[250,7268,1497],{"class":786},[250,7270,6286],{"class":786},[250,7272,7273],{"class":912},"validStatuses.",[250,7275,7276],{"class":774},"includes",[250,7278,7279],{"class":912},"(body.status)) {\n",[250,7281,7282,7284,7286],{"class":252,"line":358},[250,7283,1517],{"class":786},[250,7285,1520],{"class":774},[250,7287,1028],{"class":912},[250,7289,7290,7292,7294],{"class":252,"line":364},[250,7291,1527],{"class":912},[250,7293,1530],{"class":778},[250,7295,927],{"class":912},[250,7297,7298,7300,7303,7306,7308,7311,7313,7316,7318,7320],{"class":252,"line":370},[250,7299,1537],{"class":912},[250,7301,7302],{"class":782},"`Invalid status. Must be one of: ${",[250,7304,7305],{"class":912},"validStatuses",[250,7307,2230],{"class":782},[250,7309,7310],{"class":774},"join",[250,7312,1434],{"class":782},[250,7314,7315],{"class":782},"\", \"",[250,7317,2390],{"class":782},[250,7319,2355],{"class":782},[250,7321,927],{"class":912},[250,7323,7324],{"class":252,"line":376},[250,7325,1547],{"class":912},[250,7327,7328],{"class":252,"line":382},[250,7329,986],{"class":912},[250,7331,7332],{"class":252,"line":388},[250,7333,1053],{"class":912},[250,7335,7336,7338,7341,7343,7345],{"class":252,"line":393},[250,7337,1455],{"class":786},[250,7339,7340],{"class":778}," existingOrder",[250,7342,1187],{"class":786},[250,7344,1463],{"class":786},[250,7346,6413],{"class":912},[250,7348,7349,7351,7353],{"class":252,"line":399},[250,7350,4604],{"class":912},[250,7352,5870],{"class":774},[250,7354,4861],{"class":912},[250,7356,7357,7359,7361],{"class":252,"line":405},[250,7358,4604],{"class":912},[250,7360,1769],{"class":774},[250,7362,6945],{"class":912},[250,7364,7365,7367,7369,7371,7373],{"class":252,"line":410},[250,7366,4604],{"class":912},[250,7368,5879],{"class":774},[250,7370,1434],{"class":912},[250,7372,6442],{"class":774},[250,7374,7375],{"class":912},"(orders.id, id))\n",[250,7377,7378,7380,7382],{"class":252,"line":415},[250,7379,4604],{"class":912},[250,7381,6062],{"class":774},[250,7383,1906],{"class":912},[250,7385,7386],{"class":252,"line":420},[250,7387,1053],{"class":912},[250,7389,7390,7392,7394,7396],{"class":252,"line":426},[250,7391,1486],{"class":786},[250,7393,1440],{"class":912},[250,7395,1491],{"class":786},[250,7397,7398],{"class":912},"existingOrder) {\n",[250,7400,7401,7403,7405],{"class":252,"line":431},[250,7402,1517],{"class":786},[250,7404,1520],{"class":774},[250,7406,1028],{"class":912},[250,7408,7409,7411,7413],{"class":252,"line":436},[250,7410,1527],{"class":912},[250,7412,6094],{"class":778},[250,7414,927],{"class":912},[250,7416,7417,7419,7422],{"class":252,"line":442},[250,7418,1537],{"class":912},[250,7420,7421],{"class":782},"\"Order not found\"",[250,7423,927],{"class":912},[250,7425,7426],{"class":252,"line":447},[250,7427,1547],{"class":912},[250,7429,7430],{"class":252,"line":453},[250,7431,986],{"class":912},[250,7433,7434],{"class":252,"line":459},[250,7435,1053],{"class":912},[250,7437,7438],{"class":252,"line":465},[250,7439,7440],{"class":768},"  \u002F\u002F Update the order\n",[250,7442,7443,7445],{"class":252,"line":471},[250,7444,1565],{"class":786},[250,7446,6413],{"class":912},[250,7448,7449,7451,7454],{"class":252,"line":2201},[250,7450,4604],{"class":912},[250,7452,7453],{"class":774},"update",[250,7455,6945],{"class":912},[250,7457,7458,7460,7463],{"class":252,"line":2207},[250,7459,4604],{"class":912},[250,7461,7462],{"class":774},"set",[250,7464,1028],{"class":912},[250,7466,7467],{"class":252,"line":2213},[250,7468,7469],{"class":912},"      status: body.status,\n",[250,7471,7472,7475,7477,7479],{"class":252,"line":2218},[250,7473,7474],{"class":912},"      updatedAt: ",[250,7476,1641],{"class":786},[250,7478,1644],{"class":774},[250,7480,1156],{"class":912},[250,7482,7483],{"class":252,"line":2223},[250,7484,7485],{"class":912},"    })\n",[250,7487,7488,7490,7492,7494,7496],{"class":252,"line":2239},[250,7489,4604],{"class":912},[250,7491,5879],{"class":774},[250,7493,1434],{"class":912},[250,7495,6442],{"class":774},[250,7497,7498],{"class":912},"(orders.id, id));\n",[250,7500,7501],{"class":252,"line":2244},[250,7502,1053],{"class":912},[250,7504,7505,7507,7510,7512,7514],{"class":252,"line":2267},[250,7506,1455],{"class":786},[250,7508,7509],{"class":778}," updatedOrder",[250,7511,1187],{"class":786},[250,7513,1463],{"class":786},[250,7515,6413],{"class":912},[250,7517,7518,7520,7522],{"class":252,"line":2301},[250,7519,4604],{"class":912},[250,7521,5870],{"class":774},[250,7523,4861],{"class":912},[250,7525,7526,7528,7530],{"class":252,"line":2306},[250,7527,4604],{"class":912},[250,7529,1769],{"class":774},[250,7531,6945],{"class":912},[250,7533,7534,7536,7538,7540,7542],{"class":252,"line":2320},[250,7535,4604],{"class":912},[250,7537,5879],{"class":774},[250,7539,1434],{"class":912},[250,7541,6442],{"class":774},[250,7543,7375],{"class":912},[250,7545,7546,7548,7550],{"class":252,"line":2340},[250,7547,4604],{"class":912},[250,7549,6062],{"class":774},[250,7551,1906],{"class":912},[250,7553,7554],{"class":252,"line":2360},[250,7555,1053],{"class":912},[250,7557,7558,7560],{"class":252,"line":2397},[250,7559,1123],{"class":786},[250,7561,7562],{"class":912}," updatedOrder;\n",[250,7564,7565],{"class":252,"line":2402},[250,7566,1077],{"class":912},[2459,7568,7570],{"id":7569},"get-all-orders","Get All Orders",[20,7572,1092,7573,1007],{},[39,7574,7575],{},"server\u002Fapi\u002Forders.get.ts",[47,7577,7579],{"className":1010,"code":7578,"filename":7575,"language":1012,"meta":55,"style":55},"import { db } from \"..\u002Fdb\";\nimport { orders, orderItems } from \"..\u002Fdb\u002Fschema\";\n\nexport default defineEventHandler(async () => {\n  const allOrders = await db\n    .select()\n    .from(orders)\n    .orderBy(orders.createdAt);\n  \n  \u002F\u002F Fetch items for each order\n  const ordersWithItems = await Promise.all(\n    allOrders.map(async (order) => {\n      const items = await db\n        .select()\n        .from(orderItems)\n        .where(orderItems.orderId.equals(order.id));\n      return { ...order, items };\n    })\n  );\n  \n  return { orders: ordersWithItems };\n});\n",[39,7580,7581,7593,7606,7610,7628,7641,7649,7657,7667,7671,7676,7695,7717,7730,7739,7747,7761,7775,7779,7783,7787,7794],{"__ignoreMap":55},[250,7582,7583,7585,7587,7589,7591],{"class":252,"line":253},[250,7584,1763],{"class":786},[250,7586,5369],{"class":912},[250,7588,1769],{"class":786},[250,7590,5374],{"class":782},[250,7592,1379],{"class":912},[250,7594,7595,7597,7600,7602,7604],{"class":252,"line":113},[250,7596,1763],{"class":786},[250,7598,7599],{"class":912}," { orders, orderItems } ",[250,7601,1769],{"class":786},[250,7603,5388],{"class":782},[250,7605,1379],{"class":912},[250,7607,7608],{"class":252,"line":110},[250,7609,795],{"emptyLinePlaceholder":129},[250,7611,7612,7614,7616,7618,7620,7622,7624,7626],{"class":252,"line":269},[250,7613,1019],{"class":786},[250,7615,1022],{"class":786},[250,7617,1109],{"class":774},[250,7619,1434],{"class":912},[250,7621,1437],{"class":786},[250,7623,2015],{"class":912},[250,7625,1115],{"class":786},[250,7627,1118],{"class":912},[250,7629,7630,7632,7635,7637,7639],{"class":252,"line":275},[250,7631,1455],{"class":786},[250,7633,7634],{"class":778}," allOrders",[250,7636,1187],{"class":786},[250,7638,1463],{"class":786},[250,7640,6413],{"class":912},[250,7642,7643,7645,7647],{"class":252,"line":281},[250,7644,4604],{"class":912},[250,7646,5870],{"class":774},[250,7648,4861],{"class":912},[250,7650,7651,7653,7655],{"class":252,"line":287},[250,7652,4604],{"class":912},[250,7654,1769],{"class":774},[250,7656,6945],{"class":912},[250,7658,7659,7661,7664],{"class":252,"line":293},[250,7660,4604],{"class":912},[250,7662,7663],{"class":774},"orderBy",[250,7665,7666],{"class":912},"(orders.createdAt);\n",[250,7668,7669],{"class":252,"line":299},[250,7670,1053],{"class":912},[250,7672,7673],{"class":252,"line":132},[250,7674,7675],{"class":768},"  \u002F\u002F Fetch items for each order\n",[250,7677,7678,7680,7683,7685,7687,7689,7691,7693],{"class":252,"line":310},[250,7679,1455],{"class":786},[250,7681,7682],{"class":778}," ordersWithItems",[250,7684,1187],{"class":786},[250,7686,1463],{"class":786},[250,7688,1571],{"class":778},[250,7690,2230],{"class":912},[250,7692,2233],{"class":774},[250,7694,1982],{"class":912},[250,7696,7697,7700,7702,7704,7706,7708,7711,7713,7715],{"class":252,"line":316},[250,7698,7699],{"class":912},"    allOrders.",[250,7701,2820],{"class":774},[250,7703,1434],{"class":912},[250,7705,1437],{"class":786},[250,7707,1440],{"class":912},[250,7709,7710],{"class":1370},"order",[250,7712,1446],{"class":912},[250,7714,1115],{"class":786},[250,7716,1118],{"class":912},[250,7718,7719,7722,7724,7726,7728],{"class":252,"line":322},[250,7720,7721],{"class":786},"      const",[250,7723,5861],{"class":778},[250,7725,1187],{"class":786},[250,7727,1463],{"class":786},[250,7729,6413],{"class":912},[250,7731,7732,7735,7737],{"class":252,"line":328},[250,7733,7734],{"class":912},"        .",[250,7736,5870],{"class":774},[250,7738,4861],{"class":912},[250,7740,7741,7743,7745],{"class":252,"line":334},[250,7742,7734],{"class":912},[250,7744,1769],{"class":774},[250,7746,7005],{"class":912},[250,7748,7749,7751,7753,7756,7758],{"class":252,"line":340},[250,7750,7734],{"class":912},[250,7752,5879],{"class":774},[250,7754,7755],{"class":912},"(orderItems.orderId.",[250,7757,6056],{"class":774},[250,7759,7760],{"class":912},"(order.id));\n",[250,7762,7763,7766,7769,7772],{"class":252,"line":346},[250,7764,7765],{"class":786},"      return",[250,7767,7768],{"class":912}," { ",[250,7770,7771],{"class":786},"...",[250,7773,7774],{"class":912},"order, items };\n",[250,7776,7777],{"class":252,"line":352},[250,7778,7485],{"class":912},[250,7780,7781],{"class":252,"line":358},[250,7782,2859],{"class":912},[250,7784,7785],{"class":252,"line":364},[250,7786,1053],{"class":912},[250,7788,7789,7791],{"class":252,"line":370},[250,7790,1123],{"class":786},[250,7792,7793],{"class":912}," { orders: ordersWithItems };\n",[250,7795,7796],{"class":252,"line":376},[250,7797,1077],{"class":912},[72,7799],{},[31,7801,7803],{"id":7802},"step-7-run-migrations","Step 7: Run Migrations",[20,7805,7806],{},"Now that our schema is defined, let's generate and push the migrations.",[47,7808,7810],{"className":758,"code":7809,"filename":760,"language":761,"meta":55,"style":55},"# Generate migration files\nnpx drizzle-kit generate:sqlite\n\n# Push schema to database\nnpx drizzle-kit push:sqlite\n",[39,7811,7812,7817,7826,7830,7835],{"__ignoreMap":55},[250,7813,7814],{"class":252,"line":253},[250,7815,7816],{"class":768},"# Generate migration files\n",[250,7818,7819,7821,7823],{"class":252,"line":113},[250,7820,4200],{"class":774},[250,7822,4246],{"class":782},[250,7824,7825],{"class":782}," generate:sqlite\n",[250,7827,7828],{"class":252,"line":110},[250,7829,795],{"emptyLinePlaceholder":129},[250,7831,7832],{"class":252,"line":269},[250,7833,7834],{"class":768},"# Push schema to database\n",[250,7836,7837,7839,7841],{"class":252,"line":275},[250,7838,4200],{"class":774},[250,7840,4246],{"class":782},[250,7842,7843],{"class":782}," push:sqlite\n",[161,7845,7848],{"icon":7846,"title":7847},"🛠️","Migration Workflow",[20,7849,7850,7851,7854,7855,7858],{},"In development, you can use ",[39,7852,7853],{},"push:sqlite"," to sync changes quickly. For production, use ",[39,7856,7857],{},"generate"," to create migration files and run them separately.",[72,7860],{},[31,7862,7864],{"id":7863},"step-8-test-the-api","Step 8: Test the API",[20,7866,7867],{},"Start your server and test the endpoints:",[47,7869,7870],{"className":758,"code":196,"filename":760,"language":761,"meta":55,"style":55},[39,7871,7872],{"__ignoreMap":55},[250,7873,7874,7876,7878],{"class":252,"line":253},[250,7875,4226],{"class":774},[250,7877,1707],{"class":782},[250,7879,1710],{"class":782},[2459,7881,7883],{"id":7882},"seed-the-menu","Seed the menu:",[47,7885,7887],{"className":758,"code":7886,"language":761,"meta":55,"style":55},"curl -X POST http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fseed\n",[39,7888,7889],{"__ignoreMap":55},[250,7890,7891,7893,7896,7899],{"class":252,"line":253},[250,7892,775],{"class":774},[250,7894,7895],{"class":778}," -X",[250,7897,7898],{"class":782}," POST",[250,7900,7901],{"class":782}," http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fseed\n",[2459,7903,7905],{"id":7904},"get-the-menu","Get the menu:",[47,7907,7909],{"className":758,"code":7908,"language":761,"meta":55,"style":55},"curl http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fmenu\n",[39,7910,7911],{"__ignoreMap":55},[250,7912,7913,7915],{"class":252,"line":253},[250,7914,775],{"class":774},[250,7916,7917],{"class":782}," http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fmenu\n",[2459,7919,7921],{"id":7920},"create-an-order","Create an order:",[47,7923,7925],{"className":758,"code":7924,"language":761,"meta":55,"style":55},"curl -X POST http:\u002F\u002Flocalhost:3000\u002Fapi\u002Forders \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"customerName\": \"John\",\n    \"items\": [\n      { \"menuItemId\": \"latte\", \"quantity\": 2 },\n      { \"menuItemId\": \"croissant\", \"quantity\": 1 }\n    ]\n  }'\n",[39,7926,7927,7941,7951,7959,7964,7969,7974,7979,7984],{"__ignoreMap":55},[250,7928,7929,7931,7933,7935,7938],{"class":252,"line":253},[250,7930,775],{"class":774},[250,7932,7895],{"class":778},[250,7934,7898],{"class":782},[250,7936,7937],{"class":782}," http:\u002F\u002Flocalhost:3000\u002Fapi\u002Forders",[250,7939,7940],{"class":778}," \\\n",[250,7942,7943,7946,7949],{"class":252,"line":113},[250,7944,7945],{"class":778},"  -H",[250,7947,7948],{"class":782}," \"Content-Type: application\u002Fjson\"",[250,7950,7940],{"class":778},[250,7952,7953,7956],{"class":252,"line":110},[250,7954,7955],{"class":778},"  -d",[250,7957,7958],{"class":782}," '{\n",[250,7960,7961],{"class":252,"line":269},[250,7962,7963],{"class":782},"    \"customerName\": \"John\",\n",[250,7965,7966],{"class":252,"line":275},[250,7967,7968],{"class":782},"    \"items\": [\n",[250,7970,7971],{"class":252,"line":281},[250,7972,7973],{"class":782},"      { \"menuItemId\": \"latte\", \"quantity\": 2 },\n",[250,7975,7976],{"class":252,"line":287},[250,7977,7978],{"class":782},"      { \"menuItemId\": \"croissant\", \"quantity\": 1 }\n",[250,7980,7981],{"class":252,"line":293},[250,7982,7983],{"class":782},"    ]\n",[250,7985,7986],{"class":252,"line":299},[250,7987,7988],{"class":782},"  }'\n",[2459,7990,7992],{"id":7991},"update-order-status-1","Update order status:",[47,7994,7996],{"className":758,"code":7995,"language":761,"meta":55,"style":55},"curl -X PATCH http:\u002F\u002Flocalhost:3000\u002Fapi\u002Forders\u002FORDER_ID \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"status\": \"preparing\"}'\n",[39,7997,7998,8012,8020],{"__ignoreMap":55},[250,7999,8000,8002,8004,8007,8010],{"class":252,"line":253},[250,8001,775],{"class":774},[250,8003,7895],{"class":778},[250,8005,8006],{"class":782}," PATCH",[250,8008,8009],{"class":782}," http:\u002F\u002Flocalhost:3000\u002Fapi\u002Forders\u002FORDER_ID",[250,8011,7940],{"class":778},[250,8013,8014,8016,8018],{"class":252,"line":113},[250,8015,7945],{"class":778},[250,8017,7948],{"class":782},[250,8019,7940],{"class":778},[250,8021,8022,8024],{"class":252,"line":110},[250,8023,7955],{"class":778},[250,8025,8026],{"class":782}," '{\"status\": \"preparing\"}'\n",[72,8028],{},[31,8030,3256],{"id":3255},[20,8032,3259],{},[561,8034,8035,8038,8041,8044,8047],{},[564,8036,8037],{},"A fully typed database schema using Drizzle ORM",[564,8039,8040],{},"Type-safe queries throughout your API",[564,8042,8043],{},"Proper data validation and error handling",[564,8045,8046],{},"Order creation with transaction-like behavior",[564,8048,8049],{},"Status update workflow",[2459,8051,3280],{"id":3279},[645,8053,8054,8065],{},[648,8055,8056],{},[651,8057,8058,8061,8063],{},[654,8059,8060],{},"Method",[654,8062,3289],{},[654,8064,3292],{},[666,8066,8067,8080,8092,8104,8115,8128],{},[651,8068,8069,8072,8077],{},[671,8070,8071],{},"GET",[671,8073,8074],{},[39,8075,8076],{},"\u002Fapi\u002Fmenu",[671,8078,8079],{},"Get available menu items",[651,8081,8082,8084,8089],{},[671,8083,8071],{},[671,8085,8086],{},[39,8087,8088],{},"\u002Fapi\u002Fmenu\u002F:id",[671,8090,8091],{},"Get single menu item",[651,8093,8094,8097,8101],{},[671,8095,8096],{},"POST",[671,8098,8099],{},[39,8100,3343],{},[671,8102,8103],{},"Create new order",[651,8105,8106,8108,8112],{},[671,8107,8071],{},[671,8109,8110],{},[39,8111,3343],{},[671,8113,8114],{},"Get all orders",[651,8116,8117,8120,8125],{},[671,8118,8119],{},"PATCH",[671,8121,8122],{},[39,8123,8124],{},"\u002Fapi\u002Forders\u002F:id",[671,8126,8127],{},"Update order status",[651,8129,8130,8132,8137],{},[671,8131,8096],{},[671,8133,8134],{},[39,8135,8136],{},"\u002Fapi\u002Fseed",[671,8138,8139],{},"Seed menu data",[72,8141],{},[15,8143,3352],{"id":3351},[20,8145,8146,8147,8150],{},"Drizzle ORM transforms your database layer from an afterthought into a ",[546,8148,8149],{},"first-class citizen"," of your application. The type safety alone justifies the switch—no more runtime errors from typos in column names, no more guessing what a query returns.",[20,8152,8153],{},"Combined with Nitro's filesystem routing and deployment flexibility, you have a production-ready stack that scales:",[561,8155,8156,8162,8168],{},[564,8157,8158,8161],{},[546,8159,8160],{},"Start with SQLite"," for development and small projects",[564,8163,8164,8167],{},[546,8165,8166],{},"Switch to PostgreSQL"," for production without changing your code",[564,8169,8170,8173],{},[546,8171,8172],{},"Deploy anywhere"," — Node.js, serverless, edge",[20,8175,8176,8177,8180],{},"In the next post, we'll add ",[546,8178,8179],{},"authentication"," to protect our order management endpoints. Until then, enjoy your type-safe API! ☕🚀",[500,8182,8183],{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":55,"searchDepth":110,"depth":110,"links":8185},[8186,8187,8188,8189,8190,8191,8192,8199,8200,8206],{"id":4161,"depth":113,"text":4162},{"id":4181,"depth":113,"text":4182},{"id":4259,"depth":113,"text":4260},{"id":4360,"depth":113,"text":4361},{"id":5045,"depth":113,"text":5046},{"id":5348,"depth":113,"text":5349},{"id":5793,"depth":113,"text":5794,"children":8193},[8194,8195,8196,8197,8198],{"id":5797,"depth":110,"text":5798},{"id":5896,"depth":110,"text":5897},{"id":6131,"depth":110,"text":6132},{"id":7059,"depth":110,"text":7060},{"id":7569,"depth":110,"text":7570},{"id":7802,"depth":113,"text":7803},{"id":7863,"depth":113,"text":7864,"children":8201},[8202,8203,8204,8205],{"id":7882,"depth":110,"text":7883},{"id":7904,"depth":110,"text":7905},{"id":7920,"depth":110,"text":7921},{"id":7991,"depth":110,"text":7992},{"id":3255,"depth":113,"text":3256,"children":8207},[8208],{"id":3279,"depth":110,"text":3280},"Learn how to build a production-ready API using Drizzle ORM with Nitro. From setup to deployment, this guide covers everything you need for type-safe database operations.",{"type":12,"value":8211},[8212,8214,8218,8222,8224],[15,8213,541],{"id":540},[20,8215,4089,8216,4093],{},[546,8217,4092],{},[20,8219,4096,8220,4100],{},[546,8221,4099],{},[20,8223,4103],{},[20,8225,4106,8226,4110],{},[546,8227,4109],{},[8229,8230,3504,8231,8232,8233,8234],"drizzle","orm","database","postgres","sqlite","typescript",{},"\u002Fblog\u002Fdrizzle-nitro-api",{"title":4081,"description":8209},"blog\u002Fdrizzle-nitro-api","hs3hXuZ30XGpX2W4zEGOKNf1WS5VkLpwh9An2SIz5jY",{"id":8241,"title":8242,"author":8243,"body":8244,"canonical":115,"categories":115,"date":8285,"description":8286,"excerpt":8287,"extension":118,"img":8293,"keywords":8294,"language":8295,"meta":8296,"navigation":129,"ogImage":115,"path":8297,"rating":131,"readTime":275,"seo":8298,"stem":8299,"tag":8300,"__hash__":8301},"blog\u002Fblog\u002Ffirst-post.md","First Post - Who Am I?",{"name":8,"website":9,"img":10},{"type":12,"value":8245,"toc":8280},[8246,8250,8253,8256,8259,8263,8266,8270,8273,8277],[15,8247,8249],{"id":8248},"just-starting","Just Starting",[20,8251,8252],{},"Hey, I am Vantol, I am a Jamaican - FullStack Developer - and Educator in the Jamaican school system. (I teach Math to kids! Help Me! Please!) LOL!",[20,8254,8255],{},"I have been coding for about 10 years, and I have experimented with most programming languages but I have come to love Javascript - Node.js, Vue.js, Nuxt.js, React, MongoDB\u002FPostgres in my stack. I have been playing with Django Rest Framework of recently and might make something with one day.",[20,8257,8258],{},"In 2021, my focused shifted to making me a concept of grow along with skills and ideas that can change the world.",[31,8260,8262],{"id":8261},"starting-a-new-path","Starting a new path",[20,8264,8265],{},"Basically moving forward in 2022 will be more about Open Source, Content Creation (from Youtube and Twitch Stream) and Npm packages.",[31,8267,8269],{"id":8268},"focus","Focus",[20,8271,8272],{},"'Evolve with Innovation' has always been a slogan for me, and what better way to evolve but to make myself better as a person, father and friend. Outreach and giving back is something I have always wanted to do, so i created Zhyjenae. Zhyjenae is about helping young persons (whether in Jamaica or worldwide) appreciate coding and the doors in which it can open.",[31,8274,8276],{"id":8275},"continued-faith","Continued Faith",[20,8278,8279],{},"It's important that I state I am a Christian and increasing my faith in the Father is important and I want to show that in my coding going forward. In times like these its important to my trust in Him so I can be better in every, shape or form.",{"title":55,"searchDepth":110,"depth":110,"links":8281},[8282,8283,8284],{"id":8261,"depth":113,"text":8262},{"id":8268,"depth":113,"text":8269},{"id":8275,"depth":113,"text":8276},"2021-11-14","Hey, I am Vantol, I am a Jamaican. Get to know me!",{"type":12,"value":8288},[8289,8291],[15,8290,8249],{"id":8248},[20,8292,8252],{},"https:\u002F\u002Fres.cloudinary.com\u002Fddszyeplg\u002Fimage\u002Fupload\u002Fv1636919448\u002FDSC_0991_snlozn.jpg",[121,122],"Buy a coffee Meme",{},"\u002Fblog\u002Ffirst-post",{"title":8242,"description":8286},"blog\u002Ffirst-post","Me","gU8LLHpsi2enw1rOK7IKIn01SlAUqMESrO7y_S24NjY",{"id":8303,"title":8304,"author":8305,"body":8306,"canonical":115,"categories":115,"date":9321,"description":9322,"excerpt":9323,"extension":118,"img":9371,"keywords":9372,"language":3510,"meta":9375,"navigation":129,"ogImage":115,"path":9376,"rating":299,"readTime":132,"seo":9377,"stem":9378,"tag":9379,"__hash__":9380},"blog\u002Fblog\u002Ffood-truck-p1.md","Building a Real App with Nitro (Part 1): Foundations of a Food Truck API",{"name":8,"img":10,"website":535},{"type":12,"value":8307,"toc":9305},[8308,8310,8328,8335,8352,8358,8372,8378,8380,8384,8391,8395,8409,8412,8423,8425,8429,8432,8446,8451,8453,8457,8491,8494,8500,8503,8505,8509,8516,8521,8696,8699,8701,8705,8709,8763,8766,8772,8775,8782,8784,8788,8793,8876,8879,8881,8885,8888,8893,8955,8958,9002,9005,9007,9011,9015,9150,9157,9160,9162,9166,9172,9204,9207,9209,9213,9216,9232,9236,9252,9254,9258,9263,9280,9282,9284,9291,9299,9302],[15,8309,541],{"id":540},[20,8311,8312,8313,8316,8317,8320,8321,8323,8324,8327],{},"Most backend tutorials stop at ",[3587,8314,8315],{},"“Hello World”",". In this ",[546,8318,8319],{},"two-part series",", we’ll go further by using ",[546,8322,555],{}," to build an ",[546,8325,8326],{},"actual backend application"," — a food truck \u002F coffee shop API that could realistically power a real product.",[20,8329,8330,8331,8334],{},"In ",[546,8332,8333],{},"Part 1",", we’ll focus on:",[561,8336,8337,8340,8343,8346,8349],{},[564,8338,8339],{},"Project setup",[564,8341,8342],{},"Application structure",[564,8344,8345],{},"Core API routes (menu, orders, hours)",[564,8347,8348],{},"Runtime configuration",[564,8350,8351],{},"Local development",[20,8353,8330,8354,8357],{},[546,8355,8356],{},"Part 2",", we’ll expand this into:",[561,8359,8360,8363,8366,8369],{},[564,8361,8362],{},"Order creation and validation",[564,8364,8365],{},"Persistence (in-memory → storage)",[564,8367,8368],{},"Middleware and plugins",[564,8370,8371],{},"Deployment-ready architecture",[20,8373,8374,8375,2230],{},"This series assumes basic JavaScript\u002FTypeScript knowledge but ",[546,8376,8377],{},"no prior Nitro experience",[15,8379,748],{"id":747},[31,8381,8383],{"id":8382},"the-app-were-building","The App We’re Building",[20,8385,8386,8387,8390],{},"Our fictional app: ",[546,8388,8389],{},"BrewStop"," ☕🚚 — a mobile coffee truck.",[2459,8392,8394],{"id":8393},"core-features-backend","Core Features (Backend)",[561,8396,8397,8400,8403,8406],{},[564,8398,8399],{},"Fetch menu items",[564,8401,8402],{},"View opening hours",[564,8404,8405],{},"Place orders",[564,8407,8408],{},"Track order status",[20,8410,8411],{},"Nitro will serve as:",[561,8413,8414,8417,8420],{},[564,8415,8416],{},"The API server",[564,8418,8419],{},"The runtime abstraction layer",[564,8421,8422],{},"The deployment target (Node, serverless, edge)",[72,8424],{},[31,8426,8428],{"id":8427},"why-nitro-for-this-app","Why Nitro for This App?",[20,8430,8431],{},"Nitro is perfect for this use case because:",[561,8433,8434,8437,8440,8443],{},[564,8435,8436],{},"It’s lightweight and fast",[564,8438,8439],{},"It supports filesystem routing",[564,8441,8442],{},"It deploys anywhere",[564,8444,8445],{},"It works great with frontend frameworks later",[24,8447,8448],{"type":631},[20,8449,8450],{},"Nitro is the same server engine powering Nuxt — meaning anything we build here can later scale into a fullstack Nuxt app.",[72,8452],{},[31,8454,8456],{"id":8455},"step-1-create-the-nitro-project","Step 1: Create the Nitro Project",[47,8458,8460],{"className":758,"code":8459,"language":761,"meta":55,"style":55},"npx create-nitro-app brewstop-api\ncd brewstop-api\nnpm install\nnpm run dev\n",[39,8461,8462,8471,8477,8483],{"__ignoreMap":55},[250,8463,8464,8466,8468],{"class":252,"line":253},[250,8465,4200],{"class":774},[250,8467,4203],{"class":782},[250,8469,8470],{"class":782}," brewstop-api\n",[250,8472,8473,8475],{"class":252,"line":113},[250,8474,874],{"class":778},[250,8476,8470],{"class":782},[250,8478,8479,8481],{"class":252,"line":110},[250,8480,4226],{"class":774},[250,8482,896],{"class":782},[250,8484,8485,8487,8489],{"class":252,"line":269},[250,8486,4226],{"class":774},[250,8488,1707],{"class":782},[250,8490,1710],{"class":782},[20,8492,8493],{},"Your project structure will look like this:",[47,8495,8498],{"className":8496,"code":8497,"language":52},[50],"server\u002F\n  api\u002F\n  routes\u002F\n  plugins\u002F\nnitro.config.ts\n",[39,8499,8497],{"__ignoreMap":55},[20,8501,8502],{},"Nitro automatically wires everything together.",[72,8504],{},[31,8506,8508],{"id":8507},"step-2-define-the-menu-data","Step 2: Define the Menu Data",[20,8510,8511,8512,8515],{},"For now, we’ll start with ",[546,8513,8514],{},"in-memory data"," (we’ll improve this in Part 2).",[20,8517,1092,8518,1007],{},[39,8519,8520],{},"server\u002Fdata\u002Fmenu.ts",[47,8522,8524],{"className":1010,"code":8523,"language":1012,"meta":55,"style":55},"export interface MenuItem {\n  id: string\n  name: string\n  price: number\n  category: \"coffee\" | \"tea\" | \"food\"\n}\n\nexport const menu: MenuItem[] = [\n  { id: \"latte\", name: \"Latte\", price: 4.5, category: \"coffee\" },\n  { id: \"espresso\", name: \"Espresso\", price: 3, category: \"coffee\" },\n  { id: \"chai\", name: \"Chai Tea\", price: 4, category: \"tea\" },\n  { id: \"croissant\", name: \"Croissant\", price: 3.5, category: \"food\" }\n]\n",[39,8525,8526,8537,8546,8554,8563,8583,8587,8591,8610,8630,8650,8670,8691],{"__ignoreMap":55},[250,8527,8528,8530,8533,8535],{"class":252,"line":253},[250,8529,1019],{"class":786},[250,8531,8532],{"class":786}," interface",[250,8534,4977],{"class":774},[250,8536,1118],{"class":912},[250,8538,8539,8541,8543],{"class":252,"line":113},[250,8540,2490],{"class":1370},[250,8542,1007],{"class":786},[250,8544,8545],{"class":778}," string\n",[250,8547,8548,8550,8552],{"class":252,"line":110},[250,8549,2501],{"class":1370},[250,8551,1007],{"class":786},[250,8553,8545],{"class":778},[250,8555,8556,8558,8560],{"class":252,"line":269},[250,8557,2513],{"class":1370},[250,8559,1007],{"class":786},[250,8561,8562],{"class":778}," number\n",[250,8564,8565,8568,8570,8573,8575,8578,8580],{"class":252,"line":275},[250,8566,8567],{"class":1370},"  category",[250,8569,1007],{"class":786},[250,8571,8572],{"class":782}," \"coffee\"",[250,8574,787],{"class":786},[250,8576,8577],{"class":782}," \"tea\"",[250,8579,787],{"class":786},[250,8581,8582],{"class":782}," \"food\"\n",[250,8584,8585],{"class":252,"line":281},[250,8586,991],{"class":912},[250,8588,8589],{"class":252,"line":287},[250,8590,795],{"emptyLinePlaceholder":129},[250,8592,8593,8595,8597,8600,8602,8604,8606,8608],{"class":252,"line":293},[250,8594,1019],{"class":786},[250,8596,4438],{"class":786},[250,8598,8599],{"class":778}," menu",[250,8601,1007],{"class":786},[250,8603,4977],{"class":774},[250,8605,1413],{"class":912},[250,8607,1416],{"class":786},[250,8609,1190],{"class":912},[250,8611,8612,8614,8616,8618,8620,8622,8624,8626,8628],{"class":252,"line":299},[250,8613,1195],{"class":912},[250,8615,5412],{"class":782},[250,8617,1201],{"class":912},[250,8619,1204],{"class":782},[250,8621,1207],{"class":912},[250,8623,1210],{"class":778},[250,8625,1213],{"class":912},[250,8627,1216],{"class":782},[250,8629,1219],{"class":912},[250,8631,8632,8634,8636,8638,8640,8642,8644,8646,8648],{"class":252,"line":132},[250,8633,1195],{"class":912},[250,8635,5439],{"class":782},[250,8637,1201],{"class":912},[250,8639,1231],{"class":782},[250,8641,1207],{"class":912},[250,8643,1249],{"class":778},[250,8645,1213],{"class":912},[250,8647,1216],{"class":782},[250,8649,1219],{"class":912},[250,8651,8652,8654,8656,8658,8660,8662,8664,8666,8668],{"class":252,"line":310},[250,8653,1195],{"class":912},[250,8655,5519],{"class":782},[250,8657,1201],{"class":912},[250,8659,1278],{"class":782},[250,8661,1207],{"class":912},[250,8663,1273],{"class":778},[250,8665,1213],{"class":912},[250,8667,1288],{"class":782},[250,8669,1219],{"class":912},[250,8671,8672,8674,8676,8678,8680,8682,8684,8686,8688],{"class":252,"line":316},[250,8673,1195],{"class":912},[250,8675,5572],{"class":782},[250,8677,1201],{"class":912},[250,8679,1254],{"class":782},[250,8681,1207],{"class":912},[250,8683,1259],{"class":778},[250,8685,1213],{"class":912},[250,8687,1264],{"class":782},[250,8689,8690],{"class":912}," }\n",[250,8692,8693],{"class":252,"line":322},[250,8694,8695],{"class":912},"]\n",[20,8697,8698],{},"This shared file keeps our types and data clean.",[72,8700],{},[31,8702,8704],{"id":8703},"step-3-create-the-menu-api-route","Step 3: Create the Menu API Route",[20,8706,1092,8707,1007],{},[39,8708,5803],{},[47,8710,8712],{"className":1010,"code":8711,"language":1012,"meta":55,"style":55},"import { menu } from \"..\u002Fdata\u002Fmenu\"\n\nexport default defineEventHandler(() => {\n  return {\n    items: menu\n  }\n})\n",[39,8713,8714,8726,8730,8744,8750,8755,8759],{"__ignoreMap":55},[250,8715,8716,8718,8721,8723],{"class":252,"line":253},[250,8717,1763],{"class":786},[250,8719,8720],{"class":912}," { menu } ",[250,8722,1769],{"class":786},[250,8724,8725],{"class":782}," \"..\u002Fdata\u002Fmenu\"\n",[250,8727,8728],{"class":252,"line":113},[250,8729,795],{"emptyLinePlaceholder":129},[250,8731,8732,8734,8736,8738,8740,8742],{"class":252,"line":110},[250,8733,1019],{"class":786},[250,8735,1022],{"class":786},[250,8737,1109],{"class":774},[250,8739,1112],{"class":912},[250,8741,1115],{"class":786},[250,8743,1118],{"class":912},[250,8745,8746,8748],{"class":252,"line":269},[250,8747,1123],{"class":786},[250,8749,1118],{"class":912},[250,8751,8752],{"class":252,"line":275},[250,8753,8754],{"class":912},"    items: menu\n",[250,8756,8757],{"class":252,"line":281},[250,8758,986],{"class":912},[250,8760,8761],{"class":252,"line":287},[250,8762,474],{"class":912},[20,8764,8765],{},"Now visit:",[47,8767,8770],{"className":8768,"code":8769,"language":52},[50],"http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fmenu\n",[39,8771,8769],{"__ignoreMap":55},[20,8773,8774],{},"You’ll receive structured JSON instantly.",[20,8776,8777,8778,8781],{},"Filesystem routing means no router config, no boilerplate — your file structure ",[3587,8779,8780],{},"is"," your API.\n::",[72,8783],{},[31,8785,8787],{"id":8786},"step-4-add-business-hours","Step 4: Add Business Hours",[20,8789,1092,8790,1007],{},[39,8791,8792],{},"server\u002Fapi\u002Fhours.get.ts",[47,8794,8796],{"className":1010,"code":8795,"language":1012,"meta":55,"style":55},"export default defineEventHandler(() => {\n  return {\n    open: \"08:00\",\n    close: \"16:00\",\n    days: [\"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\"]\n  }\n})\n",[39,8797,8798,8812,8818,8828,8838,8868,8872],{"__ignoreMap":55},[250,8799,8800,8802,8804,8806,8808,8810],{"class":252,"line":253},[250,8801,1019],{"class":786},[250,8803,1022],{"class":786},[250,8805,1109],{"class":774},[250,8807,1112],{"class":912},[250,8809,1115],{"class":786},[250,8811,1118],{"class":912},[250,8813,8814,8816],{"class":252,"line":113},[250,8815,1123],{"class":786},[250,8817,1118],{"class":912},[250,8819,8820,8823,8826],{"class":252,"line":110},[250,8821,8822],{"class":912},"    open: ",[250,8824,8825],{"class":782},"\"08:00\"",[250,8827,927],{"class":912},[250,8829,8830,8833,8836],{"class":252,"line":269},[250,8831,8832],{"class":912},"    close: ",[250,8834,8835],{"class":782},"\"16:00\"",[250,8837,927],{"class":912},[250,8839,8840,8843,8846,8848,8851,8853,8856,8858,8861,8863,8866],{"class":252,"line":275},[250,8841,8842],{"class":912},"    days: [",[250,8844,8845],{"class":782},"\"Monday\"",[250,8847,7128],{"class":912},[250,8849,8850],{"class":782},"\"Tuesday\"",[250,8852,7128],{"class":912},[250,8854,8855],{"class":782},"\"Wednesday\"",[250,8857,7128],{"class":912},[250,8859,8860],{"class":782},"\"Thursday\"",[250,8862,7128],{"class":912},[250,8864,8865],{"class":782},"\"Friday\"",[250,8867,8695],{"class":912},[250,8869,8870],{"class":252,"line":281},[250,8871,986],{"class":912},[250,8873,8874],{"class":252,"line":287},[250,8875,474],{"class":912},[20,8877,8878],{},"This allows the frontend to determine if orders are allowed.",[72,8880],{},[31,8882,8884],{"id":8883},"step-5-runtime-configuration","Step 5: Runtime Configuration",[20,8886,8887],{},"Let’s make the truck name configurable.",[20,8889,1003,8890,1007],{},[39,8891,8892],{},"nitro.config.ts",[47,8894,8896],{"className":1010,"code":8895,"language":1012,"meta":55,"style":55},"import { defineNitroConfig } from \"nitro\u002Fconfig\"\n\nexport default defineNitroConfig({\n  runtimeConfig: {\n    public: {\n      truckName: \"BrewStop Coffee\"\n    }\n  }\n})\n",[39,8897,8898,8910,8914,8925,8930,8935,8943,8947,8951],{"__ignoreMap":55},[250,8899,8900,8902,8905,8907],{"class":252,"line":253},[250,8901,1763],{"class":786},[250,8903,8904],{"class":912}," { defineNitroConfig } ",[250,8906,1769],{"class":786},[250,8908,8909],{"class":782}," \"nitro\u002Fconfig\"\n",[250,8911,8912],{"class":252,"line":113},[250,8913,795],{"emptyLinePlaceholder":129},[250,8915,8916,8918,8920,8923],{"class":252,"line":110},[250,8917,1019],{"class":786},[250,8919,1022],{"class":786},[250,8921,8922],{"class":774}," defineNitroConfig",[250,8924,1028],{"class":912},[250,8926,8927],{"class":252,"line":269},[250,8928,8929],{"class":912},"  runtimeConfig: {\n",[250,8931,8932],{"class":252,"line":275},[250,8933,8934],{"class":912},"    public: {\n",[250,8936,8937,8940],{"class":252,"line":281},[250,8938,8939],{"class":912},"      truckName: ",[250,8941,8942],{"class":782},"\"BrewStop Coffee\"\n",[250,8944,8945],{"class":252,"line":287},[250,8946,3684],{"class":912},[250,8948,8949],{"class":252,"line":293},[250,8950,986],{"class":912},[250,8952,8953],{"class":252,"line":299},[250,8954,474],{"class":912},[20,8956,8957],{},"Use it in an endpoint:",[47,8959,8961],{"className":1010,"code":8960,"language":1012,"meta":55,"style":55},"export default defineEventHandler(() => {\n  const config = useRuntimeConfig()\n  return { name: config.public.truckName }\n})\n",[39,8962,8963,8977,8991,8998],{"__ignoreMap":55},[250,8964,8965,8967,8969,8971,8973,8975],{"class":252,"line":253},[250,8966,1019],{"class":786},[250,8968,1022],{"class":786},[250,8970,1109],{"class":774},[250,8972,1112],{"class":912},[250,8974,1115],{"class":786},[250,8976,1118],{"class":912},[250,8978,8979,8981,8984,8986,8989],{"class":252,"line":113},[250,8980,1455],{"class":786},[250,8982,8983],{"class":778}," config",[250,8985,1187],{"class":786},[250,8987,8988],{"class":774}," useRuntimeConfig",[250,8990,4861],{"class":912},[250,8992,8993,8995],{"class":252,"line":110},[250,8994,1123],{"class":786},[250,8996,8997],{"class":912}," { name: config.public.truckName }\n",[250,8999,9000],{"class":252,"line":269},[250,9001,474],{"class":912},[20,9003,9004],{},"Environment overrides can be added later without code changes.",[72,9006],{},[31,9008,9010],{"id":9009},"step-6-create-orders-initial-version","Step 6: Create Orders (Initial Version)",[20,9012,1092,9013,1007],{},[39,9014,1353],{},[47,9016,9018],{"className":1010,"code":9017,"language":1012,"meta":55,"style":55},"let orders: any[] = []\n\nexport default defineEventHandler(async (event) => {\n  const body = await readBody(event)\n\n  const order = {\n    id: crypto.randomUUID(),\n    items: body.items,\n    status: \"pending\",\n    createdAt: Date.now()\n  }\n\n  orders.push(order)\n  return order\n})\n",[39,9019,9020,9037,9041,9063,9078,9082,9092,9100,9105,9113,9122,9126,9130,9139,9146],{"__ignoreMap":55},[250,9021,9022,9024,9026,9028,9030,9032,9034],{"class":252,"line":253},[250,9023,1949],{"class":786},[250,9025,1405],{"class":912},[250,9027,1007],{"class":786},[250,9029,1410],{"class":778},[250,9031,1413],{"class":912},[250,9033,1416],{"class":786},[250,9035,9036],{"class":912}," []\n",[250,9038,9039],{"class":252,"line":113},[250,9040,795],{"emptyLinePlaceholder":129},[250,9042,9043,9045,9047,9049,9051,9053,9055,9057,9059,9061],{"class":252,"line":110},[250,9044,1019],{"class":786},[250,9046,1022],{"class":786},[250,9048,1109],{"class":774},[250,9050,1434],{"class":912},[250,9052,1437],{"class":786},[250,9054,1440],{"class":912},[250,9056,1443],{"class":1370},[250,9058,1446],{"class":912},[250,9060,1115],{"class":786},[250,9062,1118],{"class":912},[250,9064,9065,9067,9069,9071,9073,9075],{"class":252,"line":269},[250,9066,1455],{"class":786},[250,9068,1458],{"class":778},[250,9070,1187],{"class":786},[250,9072,1463],{"class":786},[250,9074,1466],{"class":774},[250,9076,9077],{"class":912},"(event)\n",[250,9079,9080],{"class":252,"line":275},[250,9081,795],{"emptyLinePlaceholder":129},[250,9083,9084,9086,9088,9090],{"class":252,"line":281},[250,9085,1455],{"class":786},[250,9087,1604],{"class":778},[250,9089,1187],{"class":786},[250,9091,1118],{"class":912},[250,9093,9094,9096,9098],{"class":252,"line":287},[250,9095,1613],{"class":912},[250,9097,1616],{"class":774},[250,9099,1156],{"class":912},[250,9101,9102],{"class":252,"line":293},[250,9103,9104],{"class":912},"    items: body.items,\n",[250,9106,9107,9109,9111],{"class":252,"line":299},[250,9108,1628],{"class":912},[250,9110,1631],{"class":782},[250,9112,927],{"class":912},[250,9114,9115,9118,9120],{"class":252,"line":132},[250,9116,9117],{"class":912},"    createdAt: Date.",[250,9119,1153],{"class":774},[250,9121,4861],{"class":912},[250,9123,9124],{"class":252,"line":310},[250,9125,986],{"class":912},[250,9127,9128],{"class":252,"line":316},[250,9129,795],{"emptyLinePlaceholder":129},[250,9131,9132,9134,9136],{"class":252,"line":322},[250,9133,1665],{"class":912},[250,9135,1668],{"class":774},[250,9137,9138],{"class":912},"(order)\n",[250,9140,9141,9143],{"class":252,"line":328},[250,9142,1123],{"class":786},[250,9144,9145],{"class":912}," order\n",[250,9147,9148],{"class":252,"line":334},[250,9149,474],{"class":912},[20,9151,9152,9153,9156],{},"This gives us a basic order flow we’ll ",[546,9154,9155],{},"refactor and harden"," in Part 2.",[20,9158,9159],{},"This approach is fine for development — but not production. We’ll address persistence and validation next.\n::",[72,9161],{},[31,9163,9165],{"id":9164},"step-7-testing-the-api","Step 7: Testing the API",[20,9167,9168,9169,9171],{},"You can test with ",[39,9170,775],{},", Postman, or any frontend:",[47,9173,9175],{"className":758,"code":9174,"language":761,"meta":55,"style":55},"curl -X POST http:\u002F\u002Flocalhost:3000\u002Fapi\u002Forders \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"items\":[\"latte\",\"croissant\"]}'\n",[39,9176,9177,9189,9197],{"__ignoreMap":55},[250,9178,9179,9181,9183,9185,9187],{"class":252,"line":253},[250,9180,775],{"class":774},[250,9182,7895],{"class":778},[250,9184,7898],{"class":782},[250,9186,7937],{"class":782},[250,9188,7940],{"class":778},[250,9190,9191,9193,9195],{"class":252,"line":113},[250,9192,7945],{"class":778},[250,9194,7948],{"class":782},[250,9196,7940],{"class":778},[250,9198,9199,9201],{"class":252,"line":110},[250,9200,7955],{"class":778},[250,9202,9203],{"class":782}," '{\"items\":[\"latte\",\"croissant\"]}'\n",[20,9205,9206],{},"You’ll receive a created order response immediately.",[72,9208],{},[31,9210,9212],{"id":9211},"what-weve-built-so-far","What We’ve Built So Far",[20,9214,9215],{},"By the end of Part 1, we have:",[561,9217,9218,9221,9224,9226,9229],{},[564,9219,9220],{},"A working Nitro backend",[564,9222,9223],{},"Menu and hours endpoints",[564,9225,3346],{},[564,9227,9228],{},"Runtime config",[564,9230,9231],{},"Clean file structure",[2459,9233,9235],{"id":9234},"current-api-endpoints","Current API Endpoints",[561,9237,9238,9242,9247],{},[564,9239,3299,9240],{},[39,9241,8076],{},[564,9243,3299,9244],{},[39,9245,9246],{},"\u002Fapi\u002Fhours",[564,9248,3340,9249,9251],{},[39,9250,3343],{},"\n::",[72,9253],{},[15,9255,9257],{"id":9256},"whats-coming-in-part-2","What’s Coming in Part 2",[20,9259,8330,9260,9262],{},[546,9261,8356],{},", we’ll level this up:",[561,9264,9265,9268,9271,9274,9277],{},[564,9266,9267],{},"Input validation",[564,9269,9270],{},"Order status updates",[564,9272,9273],{},"Storage using UnJS tools",[564,9275,9276],{},"Middleware (logging & auth)",[564,9278,9279],{},"Deployment-ready output",[72,9281],{},[15,9283,3352],{"id":3351},[20,9285,9286,9287,9290],{},"Nitro makes it incredibly easy to go from ",[546,9288,9289],{},"idea → working backend"," with almost zero friction. In just a few files, we’ve built the foundation of a real food truck application — something that could power a production system with the right enhancements.",[20,9292,8330,9293,9295,9296,2230],{},[546,9294,8356],{},", we’ll turn this prototype into a ",[546,9297,9298],{},"robust, scalable backend",[20,9300,9301],{},"👉 Stay tuned — BrewStop is just getting started ☕🚀",[500,9303,9304],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":55,"searchDepth":110,"depth":110,"links":9306},[9307,9310,9311,9312,9313,9314,9315,9316,9317,9318],{"id":8382,"depth":113,"text":8383,"children":9308},[9309],{"id":8393,"depth":110,"text":8394},{"id":8427,"depth":113,"text":8428},{"id":8455,"depth":113,"text":8456},{"id":8507,"depth":113,"text":8508},{"id":8703,"depth":113,"text":8704},{"id":8786,"depth":113,"text":8787},{"id":8883,"depth":113,"text":8884},{"id":9009,"depth":113,"text":9010},{"id":9164,"depth":113,"text":9165},{"id":9211,"depth":113,"text":9212,"children":9319},[9320],{"id":9234,"depth":110,"text":9235},"2026-01-21","Part 1 of a hands-on series where we use Nitro to build a real backend for a food truck \u002F coffee shop application — from project setup to core API routes.",{"type":12,"value":9324},[9325,9327,9337,9341,9353,9357,9367],[15,9326,541],{"id":540},[20,9328,8312,9329,8316,9331,8320,9333,8323,9335,8327],{},[3587,9330,8315],{},[546,9332,8319],{},[546,9334,555],{},[546,9336,8326],{},[20,9338,8330,9339,8334],{},[546,9340,8333],{},[561,9342,9343,9345,9347,9349,9351],{},[564,9344,8339],{},[564,9346,8342],{},[564,9348,8345],{},[564,9350,8348],{},[564,9352,8351],{},[20,9354,8330,9355,8357],{},[546,9356,8356],{},[561,9358,9359,9361,9363,9365],{},[564,9360,8362],{},[564,9362,8365],{},[564,9364,8368],{},[564,9366,8371],{},[20,9368,8374,9369,2230],{},[546,9370,8377],{},"https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1620589125156-fd5028c5e05b?q=80&w=3287&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",[3504,9373,3508,9374,3509,8234],"backend","food truck",{},"\u002Fblog\u002Ffood-truck-p1",{"title":8304,"description":9322},"blog\u002Ffood-truck-p1","Application Development","GxqdOxUneV8DH-GPzbVxo9BoNcHlG80DP35vcL5ShQ4",{"id":9382,"title":9383,"author":9384,"body":9385,"canonical":115,"categories":115,"date":9321,"description":10749,"excerpt":10750,"extension":118,"img":9371,"keywords":10782,"language":3510,"meta":10785,"navigation":129,"ogImage":115,"path":10786,"rating":132,"readTime":132,"seo":10787,"stem":10788,"tag":10789,"__hash__":10790},"blog\u002Fblog\u002Ffood-truck-p2.md","Building a Real App with Nitro (Part 2): Persistence, Validation, and Production Readiness",{"name":8,"img":10,"website":535},{"type":12,"value":9386,"toc":10730},[9387,9389,9400,9409,9424,9427,9429,9433,9436,9456,9463,9465,9469,9476,9480,9494,9498,9503,9572,9575,9586,9589,9591,9595,9599,9743,9746,9748,9752,9755,9760,9842,9845,9919,9922,9924,9928,9930,9934,10052,10054,10058,10240,10243,10248,10250,10254,10259,10370,10373,10375,10379,10382,10386,10421,10426,10563,10566,10568,10572,10575,10588,10595,10606,10618,10621,10623,10627,10631,10654,10657,10671,10673,10675,10684,10700,10707,10710,10724,10727],[15,9388,541],{"id":540},[20,9390,8330,9391,9393,9394,9396,9397,9399],{},[546,9392,8333],{},", we built the foundation of ",[546,9395,8389],{},", a food truck \u002F coffee shop backend powered by ",[546,9398,555],{},". We created menu endpoints, business hours, and a basic order flow.",[20,9401,8330,9402,9404,9405,9408],{},[546,9403,8356],{},", we’ll turn that prototype into something ",[546,9406,9407],{},"production-ready"," by adding:",[561,9410,9411,9413,9416,9418,9421],{},[564,9412,9267],{},[564,9414,9415],{},"Persistent storage (using UnJS tools)",[564,9417,9270],{},[564,9419,9420],{},"Middleware & plugins",[564,9422,9423],{},"Better structure for deployment",[20,9425,9426],{},"This is where Nitro really shines — small additions, big capability.",[15,9428,748],{"id":747},[31,9430,9432],{"id":9431},"recap-where-we-left-off","Recap: Where We Left Off",[20,9434,9435],{},"At the end of Part 1, we had:",[561,9437,9438,9443,9448,9453],{},[564,9439,9440],{},[39,9441,9442],{},"GET \u002Fapi\u002Fmenu",[564,9444,9445],{},[39,9446,9447],{},"GET \u002Fapi\u002Fhours",[564,9449,9450],{},[39,9451,9452],{},"POST \u002Fapi\u002Forders",[564,9454,9455],{},"In-memory order storage",[20,9457,9458,9459,9462],{},"The biggest limitation? ",[546,9460,9461],{},"Orders disappear on restart"," and inputs are not validated. Let’s fix that.",[72,9464],{},[31,9466,9468],{"id":9467},"step-1-add-persistent-storage-with-unstorage","Step 1: Add Persistent Storage with Unstorage",[20,9470,9471,9472,9475],{},"Nitro integrates beautifully with ",[546,9473,9474],{},"Unstorage",", a key-value storage system from the UnJS ecosystem.",[2459,9477,9479],{"id":9478},"install-unstorage","Install Unstorage",[47,9481,9483],{"className":758,"code":9482,"language":761,"meta":55,"style":55},"npm install unstorage\n",[39,9484,9485],{"__ignoreMap":55},[250,9486,9487,9489,9491],{"class":252,"line":253},[250,9488,4226],{"class":774},[250,9490,808],{"class":782},[250,9492,9493],{"class":782}," unstorage\n",[2459,9495,9497],{"id":9496},"create-a-storage-utility","Create a Storage Utility",[20,9499,1092,9500,1007],{},[39,9501,9502],{},"server\u002Futils\u002Fstorage.ts",[47,9504,9506],{"className":1010,"code":9505,"language":1012,"meta":55,"style":55},"import { createStorage } from \"unstorage\"\nimport fsDriver from \"unstorage\u002Fdrivers\u002Ffs\"\n\nexport const storage = createStorage({\n  driver: fsDriver({ base: \".\u002F.data\" })\n})\n",[39,9507,9508,9520,9532,9536,9552,9568],{"__ignoreMap":55},[250,9509,9510,9512,9515,9517],{"class":252,"line":253},[250,9511,1763],{"class":786},[250,9513,9514],{"class":912}," { createStorage } ",[250,9516,1769],{"class":786},[250,9518,9519],{"class":782}," \"unstorage\"\n",[250,9521,9522,9524,9527,9529],{"class":252,"line":113},[250,9523,1763],{"class":786},[250,9525,9526],{"class":912}," fsDriver ",[250,9528,1769],{"class":786},[250,9530,9531],{"class":782}," \"unstorage\u002Fdrivers\u002Ffs\"\n",[250,9533,9534],{"class":252,"line":110},[250,9535,795],{"emptyLinePlaceholder":129},[250,9537,9538,9540,9542,9545,9547,9550],{"class":252,"line":269},[250,9539,1019],{"class":786},[250,9541,4438],{"class":786},[250,9543,9544],{"class":778}," storage",[250,9546,1187],{"class":786},[250,9548,9549],{"class":774}," createStorage",[250,9551,1028],{"class":912},[250,9553,9554,9557,9560,9563,9566],{"class":252,"line":275},[250,9555,9556],{"class":912},"  driver: ",[250,9558,9559],{"class":774},"fsDriver",[250,9561,9562],{"class":912},"({ base: ",[250,9564,9565],{"class":782},"\".\u002F.data\"",[250,9567,4599],{"class":912},[250,9569,9570],{"class":252,"line":281},[250,9571,474],{"class":912},[20,9573,9574],{},"This gives us:",[561,9576,9577,9580,9583],{},[564,9578,9579],{},"Persistent storage",[564,9581,9582],{},"Zero database setup",[564,9584,9585],{},"Easy swap to Redis, Cloudflare KV, etc.",[20,9587,9588],{},"You can switch storage drivers without rewriting your application logic.\n::",[72,9590],{},[31,9592,9594],{"id":9593},"step-2-refactor-orders-to-use-storage","Step 2: Refactor Orders to Use Storage",[20,9596,1003,9597,1007],{},[39,9598,1353],{},[47,9600,9602],{"className":1010,"code":9601,"language":1012,"meta":55,"style":55},"import { storage } from \"..\u002Futils\u002Fstorage\"\n\nexport default defineEventHandler(async (event) => {\n  const body = await readBody(event)\n\n  const order = {\n    id: crypto.randomUUID(),\n    items: body.items,\n    status: \"pending\",\n    createdAt: Date.now()\n  }\n\n  await storage.setItem(`orders:${order.id}`, order)\n  return order\n})\n",[39,9603,9604,9616,9620,9642,9656,9660,9670,9678,9682,9690,9698,9702,9706,9733,9739],{"__ignoreMap":55},[250,9605,9606,9608,9611,9613],{"class":252,"line":253},[250,9607,1763],{"class":786},[250,9609,9610],{"class":912}," { storage } ",[250,9612,1769],{"class":786},[250,9614,9615],{"class":782}," \"..\u002Futils\u002Fstorage\"\n",[250,9617,9618],{"class":252,"line":113},[250,9619,795],{"emptyLinePlaceholder":129},[250,9621,9622,9624,9626,9628,9630,9632,9634,9636,9638,9640],{"class":252,"line":110},[250,9623,1019],{"class":786},[250,9625,1022],{"class":786},[250,9627,1109],{"class":774},[250,9629,1434],{"class":912},[250,9631,1437],{"class":786},[250,9633,1440],{"class":912},[250,9635,1443],{"class":1370},[250,9637,1446],{"class":912},[250,9639,1115],{"class":786},[250,9641,1118],{"class":912},[250,9643,9644,9646,9648,9650,9652,9654],{"class":252,"line":269},[250,9645,1455],{"class":786},[250,9647,1458],{"class":778},[250,9649,1187],{"class":786},[250,9651,1463],{"class":786},[250,9653,1466],{"class":774},[250,9655,9077],{"class":912},[250,9657,9658],{"class":252,"line":275},[250,9659,795],{"emptyLinePlaceholder":129},[250,9661,9662,9664,9666,9668],{"class":252,"line":281},[250,9663,1455],{"class":786},[250,9665,1604],{"class":778},[250,9667,1187],{"class":786},[250,9669,1118],{"class":912},[250,9671,9672,9674,9676],{"class":252,"line":287},[250,9673,1613],{"class":912},[250,9675,1616],{"class":774},[250,9677,1156],{"class":912},[250,9679,9680],{"class":252,"line":293},[250,9681,9104],{"class":912},[250,9683,9684,9686,9688],{"class":252,"line":299},[250,9685,1628],{"class":912},[250,9687,1631],{"class":782},[250,9689,927],{"class":912},[250,9691,9692,9694,9696],{"class":252,"line":132},[250,9693,9117],{"class":912},[250,9695,1153],{"class":774},[250,9697,4861],{"class":912},[250,9699,9700],{"class":252,"line":310},[250,9701,986],{"class":912},[250,9703,9704],{"class":252,"line":316},[250,9705,795],{"emptyLinePlaceholder":129},[250,9707,9708,9710,9713,9716,9718,9721,9723,9725,9728,9730],{"class":252,"line":322},[250,9709,1565],{"class":786},[250,9711,9712],{"class":912}," storage.",[250,9714,9715],{"class":774},"setItem",[250,9717,1434],{"class":912},[250,9719,9720],{"class":782},"`orders:${",[250,9722,7710],{"class":912},[250,9724,2230],{"class":782},[250,9726,9727],{"class":912},"id",[250,9729,2355],{"class":782},[250,9731,9732],{"class":912},", order)\n",[250,9734,9735,9737],{"class":252,"line":328},[250,9736,1123],{"class":786},[250,9738,9145],{"class":912},[250,9740,9741],{"class":252,"line":334},[250,9742,474],{"class":912},[20,9744,9745],{},"Now orders persist across restarts.",[72,9747],{},[31,9749,9751],{"id":9750},"step-3-input-validation","Step 3: Input Validation",[20,9753,9754],{},"Never trust user input — even for coffee ☕.",[20,9756,1092,9757,1007],{},[39,9758,9759],{},"server\u002Futils\u002Fvalidation.ts",[47,9761,9763],{"className":1010,"code":9762,"language":1012,"meta":55,"style":55},"export function validateOrder(body: any) {\n  if (!body?.items || !Array.isArray(body.items)) {\n    throw createError({\n      statusCode: 400,\n      statusMessage: \"Invalid order format\"\n    })\n  }\n}\n",[39,9764,9765,9785,9807,9815,9823,9830,9834,9838],{"__ignoreMap":55},[250,9766,9767,9769,9771,9774,9776,9779,9781,9783],{"class":252,"line":253},[250,9768,1019],{"class":786},[250,9770,1845],{"class":786},[250,9772,9773],{"class":774}," validateOrder",[250,9775,1434],{"class":912},[250,9777,9778],{"class":1370},"body",[250,9780,1007],{"class":786},[250,9782,1410],{"class":778},[250,9784,1512],{"class":912},[250,9786,9787,9789,9791,9793,9796,9798,9800,9802,9804],{"class":252,"line":113},[250,9788,1486],{"class":786},[250,9790,1440],{"class":912},[250,9792,1491],{"class":786},[250,9794,9795],{"class":912},"body?.items ",[250,9797,1497],{"class":786},[250,9799,6286],{"class":786},[250,9801,6289],{"class":912},[250,9803,6292],{"class":774},[250,9805,9806],{"class":912},"(body.items)) {\n",[250,9808,9809,9811,9813],{"class":252,"line":110},[250,9810,1517],{"class":786},[250,9812,1520],{"class":774},[250,9814,1028],{"class":912},[250,9816,9817,9819,9821],{"class":252,"line":269},[250,9818,1527],{"class":912},[250,9820,1530],{"class":778},[250,9822,927],{"class":912},[250,9824,9825,9827],{"class":252,"line":275},[250,9826,1537],{"class":912},[250,9828,9829],{"class":782},"\"Invalid order format\"\n",[250,9831,9832],{"class":252,"line":281},[250,9833,7485],{"class":912},[250,9835,9836],{"class":252,"line":287},[250,9837,986],{"class":912},[250,9839,9840],{"class":252,"line":293},[250,9841,991],{"class":912},[20,9843,9844],{},"Use it in your endpoint:",[47,9846,9848],{"className":1010,"code":9847,"language":1012,"meta":55,"style":55},"import { validateOrder } from \"..\u002Futils\u002Fvalidation\"\n\nexport default defineEventHandler(async (event) => {\n  const body = await readBody(event)\n  validateOrder(body)\n  \u002F\u002F continue logic\n})\n",[39,9849,9850,9862,9866,9888,9902,9910,9915],{"__ignoreMap":55},[250,9851,9852,9854,9857,9859],{"class":252,"line":253},[250,9853,1763],{"class":786},[250,9855,9856],{"class":912}," { validateOrder } ",[250,9858,1769],{"class":786},[250,9860,9861],{"class":782}," \"..\u002Futils\u002Fvalidation\"\n",[250,9863,9864],{"class":252,"line":113},[250,9865,795],{"emptyLinePlaceholder":129},[250,9867,9868,9870,9872,9874,9876,9878,9880,9882,9884,9886],{"class":252,"line":110},[250,9869,1019],{"class":786},[250,9871,1022],{"class":786},[250,9873,1109],{"class":774},[250,9875,1434],{"class":912},[250,9877,1437],{"class":786},[250,9879,1440],{"class":912},[250,9881,1443],{"class":1370},[250,9883,1446],{"class":912},[250,9885,1115],{"class":786},[250,9887,1118],{"class":912},[250,9889,9890,9892,9894,9896,9898,9900],{"class":252,"line":269},[250,9891,1455],{"class":786},[250,9893,1458],{"class":778},[250,9895,1187],{"class":786},[250,9897,1463],{"class":786},[250,9899,1466],{"class":774},[250,9901,9077],{"class":912},[250,9903,9904,9907],{"class":252,"line":275},[250,9905,9906],{"class":774},"  validateOrder",[250,9908,9909],{"class":912},"(body)\n",[250,9911,9912],{"class":252,"line":281},[250,9913,9914],{"class":768},"  \u002F\u002F continue logic\n",[250,9916,9917],{"class":252,"line":287},[250,9918,474],{"class":912},[20,9920,9921],{},"Validation protects your API from malformed requests and accidental misuse.\n::",[72,9923],{},[31,9925,9927],{"id":9926},"step-4-fetch-orders-update-status","Step 4: Fetch Orders & Update Status",[2459,9929,7570],{"id":7569},[20,9931,1092,9932,1007],{},[39,9933,7575],{},[47,9935,9937],{"className":1010,"code":9936,"language":1012,"meta":55,"style":55},"import { storage } from \"..\u002Futils\u002Fstorage\"\n\nexport default defineEventHandler(async () => {\n  const keys = await storage.getKeys(\"orders:\")\n  const orders = await Promise.all(\n    keys.map((key) => storage.getItem(key))\n  )\n  return orders\n})\n",[39,9938,9939,9949,9953,9971,9994,10012,10036,10041,10048],{"__ignoreMap":55},[250,9940,9941,9943,9945,9947],{"class":252,"line":253},[250,9942,1763],{"class":786},[250,9944,9610],{"class":912},[250,9946,1769],{"class":786},[250,9948,9615],{"class":782},[250,9950,9951],{"class":252,"line":113},[250,9952,795],{"emptyLinePlaceholder":129},[250,9954,9955,9957,9959,9961,9963,9965,9967,9969],{"class":252,"line":110},[250,9956,1019],{"class":786},[250,9958,1022],{"class":786},[250,9960,1109],{"class":774},[250,9962,1434],{"class":912},[250,9964,1437],{"class":786},[250,9966,2015],{"class":912},[250,9968,1115],{"class":786},[250,9970,1118],{"class":912},[250,9972,9973,9975,9978,9980,9982,9984,9987,9989,9992],{"class":252,"line":269},[250,9974,1455],{"class":786},[250,9976,9977],{"class":778}," keys",[250,9979,1187],{"class":786},[250,9981,1463],{"class":786},[250,9983,9712],{"class":912},[250,9985,9986],{"class":774},"getKeys",[250,9988,1434],{"class":912},[250,9990,9991],{"class":782},"\"orders:\"",[250,9993,4852],{"class":912},[250,9995,9996,9998,10000,10002,10004,10006,10008,10010],{"class":252,"line":275},[250,9997,1455],{"class":786},[250,9999,1405],{"class":778},[250,10001,1187],{"class":786},[250,10003,1463],{"class":786},[250,10005,1571],{"class":778},[250,10007,2230],{"class":912},[250,10009,2233],{"class":774},[250,10011,1982],{"class":912},[250,10013,10014,10017,10019,10021,10024,10026,10028,10030,10033],{"class":252,"line":281},[250,10015,10016],{"class":912},"    keys.",[250,10018,2820],{"class":774},[250,10020,1574],{"class":912},[250,10022,10023],{"class":1370},"key",[250,10025,1446],{"class":912},[250,10027,1115],{"class":786},[250,10029,9712],{"class":912},[250,10031,10032],{"class":774},"getItem",[250,10034,10035],{"class":912},"(key))\n",[250,10037,10038],{"class":252,"line":287},[250,10039,10040],{"class":912},"  )\n",[250,10042,10043,10045],{"class":252,"line":293},[250,10044,1123],{"class":786},[250,10046,10047],{"class":912}," orders\n",[250,10049,10050],{"class":252,"line":299},[250,10051,474],{"class":912},[2459,10053,7060],{"id":7059},[20,10055,1092,10056,1007],{},[39,10057,7065],{},[47,10059,10061],{"className":1010,"code":10060,"language":1012,"meta":55,"style":55},"import { storage } from \"..\u002F..\u002Futils\u002Fstorage\"\n\nexport default defineEventHandler(async (event) => {\n  const id = event.context.params?.id\n  const body = await readBody(event)\n\n  const order = await storage.getItem(`orders:${id}`)\n  if (!order) {\n    throw createError({ statusCode: 404, statusMessage: \"Order not found\" })\n  }\n\n  const updated = { ...order, status: body.status }\n  await storage.setItem(`orders:${id}`, updated)\n\n  return updated\n})\n",[39,10062,10063,10074,10078,10100,10111,10125,10129,10153,10164,10182,10186,10190,10206,10225,10229,10236],{"__ignoreMap":55},[250,10064,10065,10067,10069,10071],{"class":252,"line":253},[250,10066,1763],{"class":786},[250,10068,9610],{"class":912},[250,10070,1769],{"class":786},[250,10072,10073],{"class":782}," \"..\u002F..\u002Futils\u002Fstorage\"\n",[250,10075,10076],{"class":252,"line":113},[250,10077,795],{"emptyLinePlaceholder":129},[250,10079,10080,10082,10084,10086,10088,10090,10092,10094,10096,10098],{"class":252,"line":110},[250,10081,1019],{"class":786},[250,10083,1022],{"class":786},[250,10085,1109],{"class":774},[250,10087,1434],{"class":912},[250,10089,1437],{"class":786},[250,10091,1440],{"class":912},[250,10093,1443],{"class":1370},[250,10095,1446],{"class":912},[250,10097,1115],{"class":786},[250,10099,1118],{"class":912},[250,10101,10102,10104,10106,10108],{"class":252,"line":269},[250,10103,1455],{"class":786},[250,10105,5964],{"class":778},[250,10107,1187],{"class":786},[250,10109,10110],{"class":912}," event.context.params?.id\n",[250,10112,10113,10115,10117,10119,10121,10123],{"class":252,"line":275},[250,10114,1455],{"class":786},[250,10116,1458],{"class":778},[250,10118,1187],{"class":786},[250,10120,1463],{"class":786},[250,10122,1466],{"class":774},[250,10124,9077],{"class":912},[250,10126,10127],{"class":252,"line":281},[250,10128,795],{"emptyLinePlaceholder":129},[250,10130,10131,10133,10135,10137,10139,10141,10143,10145,10147,10149,10151],{"class":252,"line":287},[250,10132,1455],{"class":786},[250,10134,1604],{"class":778},[250,10136,1187],{"class":786},[250,10138,1463],{"class":786},[250,10140,9712],{"class":912},[250,10142,10032],{"class":774},[250,10144,1434],{"class":912},[250,10146,9720],{"class":782},[250,10148,9727],{"class":912},[250,10150,2355],{"class":782},[250,10152,4852],{"class":912},[250,10154,10155,10157,10159,10161],{"class":252,"line":293},[250,10156,1486],{"class":786},[250,10158,1440],{"class":912},[250,10160,1491],{"class":786},[250,10162,10163],{"class":912},"order) {\n",[250,10165,10166,10168,10170,10173,10175,10178,10180],{"class":252,"line":299},[250,10167,1517],{"class":786},[250,10169,1520],{"class":774},[250,10171,10172],{"class":912},"({ statusCode: ",[250,10174,6094],{"class":778},[250,10176,10177],{"class":912},", statusMessage: ",[250,10179,7421],{"class":782},[250,10181,4599],{"class":912},[250,10183,10184],{"class":252,"line":132},[250,10185,986],{"class":912},[250,10187,10188],{"class":252,"line":310},[250,10189,795],{"emptyLinePlaceholder":129},[250,10191,10192,10194,10197,10199,10201,10203],{"class":252,"line":316},[250,10193,1455],{"class":786},[250,10195,10196],{"class":778}," updated",[250,10198,1187],{"class":786},[250,10200,7768],{"class":912},[250,10202,7771],{"class":786},[250,10204,10205],{"class":912},"order, status: body.status }\n",[250,10207,10208,10210,10212,10214,10216,10218,10220,10222],{"class":252,"line":322},[250,10209,1565],{"class":786},[250,10211,9712],{"class":912},[250,10213,9715],{"class":774},[250,10215,1434],{"class":912},[250,10217,9720],{"class":782},[250,10219,9727],{"class":912},[250,10221,2355],{"class":782},[250,10223,10224],{"class":912},", updated)\n",[250,10226,10227],{"class":252,"line":328},[250,10228,795],{"emptyLinePlaceholder":129},[250,10230,10231,10233],{"class":252,"line":334},[250,10232,1123],{"class":786},[250,10234,10235],{"class":912}," updated\n",[250,10237,10238],{"class":252,"line":340},[250,10239,474],{"class":912},[20,10241,10242],{},"Now BrewStop supports a real workflow:",[561,10244,10245],{},[564,10246,10247],{},"pending → preparing → ready → completed",[72,10249],{},[31,10251,10253],{"id":10252},"step-5-add-middleware-logging","Step 5: Add Middleware (Logging)",[20,10255,1092,10256,1007],{},[39,10257,10258],{},"server\u002Fplugins\u002Flogger.ts",[47,10260,10262],{"className":1010,"code":10261,"language":1012,"meta":55,"style":55},"export default defineNitroPlugin((nitroApp) => {\n  nitroApp.hooks.hook(\"request\", (event) => {\n    console.log(\n      `[${new Date().toISOString()}] ${event.method} ${event.path}`\n    )\n  })\n})\n",[39,10263,10264,10284,10308,10317,10356,10361,10366],{"__ignoreMap":55},[250,10265,10266,10268,10270,10273,10275,10278,10280,10282],{"class":252,"line":253},[250,10267,1019],{"class":786},[250,10269,1022],{"class":786},[250,10271,10272],{"class":774}," defineNitroPlugin",[250,10274,1574],{"class":912},[250,10276,10277],{"class":1370},"nitroApp",[250,10279,1446],{"class":912},[250,10281,1115],{"class":786},[250,10283,1118],{"class":912},[250,10285,10286,10289,10292,10294,10297,10300,10302,10304,10306],{"class":252,"line":113},[250,10287,10288],{"class":912},"  nitroApp.hooks.",[250,10290,10291],{"class":774},"hook",[250,10293,1434],{"class":912},[250,10295,10296],{"class":782},"\"request\"",[250,10298,10299],{"class":912},", (",[250,10301,1443],{"class":1370},[250,10303,1446],{"class":912},[250,10305,1115],{"class":786},[250,10307,1118],{"class":912},[250,10309,10310,10313,10315],{"class":252,"line":110},[250,10311,10312],{"class":912},"    console.",[250,10314,1859],{"class":774},[250,10316,1982],{"class":912},[250,10318,10319,10322,10324,10326,10328,10330,10333,10336,10338,10340,10343,10346,10348,10350,10353],{"class":252,"line":269},[250,10320,10321],{"class":782},"      `[${",[250,10323,1641],{"class":786},[250,10325,1644],{"class":774},[250,10327,1647],{"class":782},[250,10329,1650],{"class":774},[250,10331,10332],{"class":782},"()",[250,10334,10335],{"class":782},"}] ${",[250,10337,1443],{"class":912},[250,10339,2230],{"class":782},[250,10341,10342],{"class":912},"method",[250,10344,10345],{"class":782},"} ${",[250,10347,1443],{"class":912},[250,10349,2230],{"class":782},[250,10351,10352],{"class":912},"path",[250,10354,10355],{"class":782},"}`\n",[250,10357,10358],{"class":252,"line":275},[250,10359,10360],{"class":912},"    )\n",[250,10362,10363],{"class":252,"line":281},[250,10364,10365],{"class":912},"  })\n",[250,10367,10368],{"class":252,"line":287},[250,10369,474],{"class":912},[20,10371,10372],{},"This gives you centralized request logging without cluttering endpoints.",[72,10374],{},[31,10376,10378],{"id":10377},"step-6-simple-api-key-protection","Step 6: Simple API Key Protection",[20,10380,10381],{},"Let’s protect order updates.",[20,10383,1003,10384,1007],{},[39,10385,8892],{},[47,10387,10389],{"className":1010,"code":10388,"language":1012,"meta":55,"style":55},"export default defineNitroConfig({\n  runtimeConfig: {\n    apiKey: \"super-secret-key\"\n  }\n})\n",[39,10390,10391,10401,10405,10413,10417],{"__ignoreMap":55},[250,10392,10393,10395,10397,10399],{"class":252,"line":253},[250,10394,1019],{"class":786},[250,10396,1022],{"class":786},[250,10398,8922],{"class":774},[250,10400,1028],{"class":912},[250,10402,10403],{"class":252,"line":113},[250,10404,8929],{"class":912},[250,10406,10407,10410],{"class":252,"line":110},[250,10408,10409],{"class":912},"    apiKey: ",[250,10411,10412],{"class":782},"\"super-secret-key\"\n",[250,10414,10415],{"class":252,"line":269},[250,10416,986],{"class":912},[250,10418,10419],{"class":252,"line":275},[250,10420,474],{"class":912},[20,10422,1092,10423,1007],{},[39,10424,10425],{},"server\u002Fplugins\u002Fauth.ts",[47,10427,10429],{"className":1010,"code":10428,"language":1012,"meta":55,"style":55},"export default defineNitroPlugin(() => {\n  addEventHandler((event) => {\n    if (event.path.startsWith(\"\u002Fapi\u002Forders\") && event.method !== \"GET\") {\n      const key = event.headers.get(\"x-api-key\")\n      if (key !== useRuntimeConfig().apiKey) {\n        throw createError({ statusCode: 401, statusMessage: \"Unauthorized\" })\n      }\n    }\n  })\n})\n",[39,10430,10431,10445,10460,10491,10512,10527,10546,10551,10555,10559],{"__ignoreMap":55},[250,10432,10433,10435,10437,10439,10441,10443],{"class":252,"line":253},[250,10434,1019],{"class":786},[250,10436,1022],{"class":786},[250,10438,10272],{"class":774},[250,10440,1112],{"class":912},[250,10442,1115],{"class":786},[250,10444,1118],{"class":912},[250,10446,10447,10450,10452,10454,10456,10458],{"class":252,"line":113},[250,10448,10449],{"class":774},"  addEventHandler",[250,10451,1574],{"class":912},[250,10453,1443],{"class":1370},[250,10455,1446],{"class":912},[250,10457,1115],{"class":786},[250,10459,1118],{"class":912},[250,10461,10462,10464,10467,10470,10472,10475,10477,10480,10483,10486,10489],{"class":252,"line":110},[250,10463,6463],{"class":786},[250,10465,10466],{"class":912}," (event.path.",[250,10468,10469],{"class":774},"startsWith",[250,10471,1434],{"class":912},[250,10473,10474],{"class":782},"\"\u002Fapi\u002Forders\"",[250,10476,1446],{"class":912},[250,10478,10479],{"class":786},"&&",[250,10481,10482],{"class":912}," event.method ",[250,10484,10485],{"class":786},"!==",[250,10487,10488],{"class":782}," \"GET\"",[250,10490,1512],{"class":912},[250,10492,10493,10495,10498,10500,10503,10505,10507,10510],{"class":252,"line":269},[250,10494,7721],{"class":786},[250,10496,10497],{"class":778}," key",[250,10499,1187],{"class":786},[250,10501,10502],{"class":912}," event.headers.",[250,10504,6062],{"class":774},[250,10506,1434],{"class":912},[250,10508,10509],{"class":782},"\"x-api-key\"",[250,10511,4852],{"class":912},[250,10513,10514,10517,10520,10522,10524],{"class":252,"line":275},[250,10515,10516],{"class":786},"      if",[250,10518,10519],{"class":912}," (key ",[250,10521,10485],{"class":786},[250,10523,8988],{"class":774},[250,10525,10526],{"class":912},"().apiKey) {\n",[250,10528,10529,10532,10534,10536,10539,10541,10544],{"class":252,"line":281},[250,10530,10531],{"class":786},"        throw",[250,10533,1520],{"class":774},[250,10535,10172],{"class":912},[250,10537,10538],{"class":778},"401",[250,10540,10177],{"class":912},[250,10542,10543],{"class":782},"\"Unauthorized\"",[250,10545,4599],{"class":912},[250,10547,10548],{"class":252,"line":287},[250,10549,10550],{"class":912},"      }\n",[250,10552,10553],{"class":252,"line":293},[250,10554,3684],{"class":912},[250,10556,10557],{"class":252,"line":299},[250,10558,10365],{"class":912},[250,10560,10561],{"class":252,"line":132},[250,10562,474],{"class":912},[20,10564,10565],{},"This is intentionally simple — Nitro plugins scale well to JWT, OAuth, or third-party auth later.\n::",[72,10567],{},[31,10569,10571],{"id":10570},"step-7-deployment-readiness","Step 7: Deployment Readiness",[20,10573,10574],{},"Build your app:",[47,10576,10578],{"className":758,"code":10577,"language":761,"meta":55,"style":55},"npm run build\n",[39,10579,10580],{"__ignoreMap":55},[250,10581,10582,10584,10586],{"class":252,"line":253},[250,10583,4226],{"class":774},[250,10585,1707],{"class":782},[250,10587,3234],{"class":782},[20,10589,10590,10591,10594],{},"Nitro outputs a ",[39,10592,10593],{},".output"," directory that can run on:",[561,10596,10597,10600,10603],{},[564,10598,10599],{},"Node.js servers",[564,10601,10602],{},"Serverless platforms",[564,10604,10605],{},"Edge runtimes",[47,10607,10609],{"className":758,"code":10608,"language":761,"meta":55,"style":55},"node .output\u002Fserver\u002Findex.mjs\n",[39,10610,10611],{"__ignoreMap":55},[250,10612,10613,10616],{"class":252,"line":253},[250,10614,10615],{"class":774},"node",[250,10617,3243],{"class":782},[20,10619,10620],{},"No changes needed.",[72,10622],{},[31,10624,10626],{"id":10625},"final-api-overview","Final API Overview",[2459,10628,10630],{"id":10629},"brewstop-api-final","BrewStop API (Final)",[561,10632,10633,10637,10641,10645,10649],{},[564,10634,3299,10635],{},[39,10636,8076],{},[564,10638,3299,10639],{},[39,10640,9246],{},[564,10642,3299,10643],{},[39,10644,3343],{},[564,10646,3340,10647],{},[39,10648,3343],{},[564,10650,10651,10652,9251],{},"PATCH ",[39,10653,8124],{},[20,10655,10656],{},"This backend can now realistically power:",[561,10658,10659,10662,10665,10668],{},[564,10660,10661],{},"A POS system",[564,10663,10664],{},"A mobile app",[564,10666,10667],{},"A Nuxt frontend",[564,10669,10670],{},"An admin dashboard",[72,10672],{},[15,10674,3352],{"id":3351},[20,10676,10677,10678,10681,10682,1007],{},"In just ",[546,10679,10680],{},"two parts",", we’ve built a real backend using ",[546,10683,555],{},[561,10685,10686,10688,10691,10694,10697],{},[564,10687,9579],{},[564,10689,10690],{},"Validation",[564,10692,10693],{},"Middleware",[564,10695,10696],{},"Secure endpoints",[564,10698,10699],{},"Multi-runtime deployment",[20,10701,10702,10703,10706],{},"Nitro proves that you don’t need heavy frameworks or complex infrastructure to build ",[546,10704,10705],{},"serious applications",". With composable UnJS tools and clean architecture, you can ship fast — and scale later.",[20,10708,10709],{},"Next steps?",[561,10711,10712,10715,10718,10721],{},[564,10713,10714],{},"Add a frontend (Nuxt or Vite)",[564,10716,10717],{},"Add payments",[564,10719,10720],{},"Deploy to edge",[564,10722,10723],{},"Replace storage with a database",[20,10725,10726],{},"BrewStop is production-ready — and this is only the beginning. ☕🚀",[500,10728,10729],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":55,"searchDepth":110,"depth":110,"links":10731},[10732,10733,10737,10738,10739,10743,10744,10745,10746],{"id":9431,"depth":113,"text":9432},{"id":9467,"depth":113,"text":9468,"children":10734},[10735,10736],{"id":9478,"depth":110,"text":9479},{"id":9496,"depth":110,"text":9497},{"id":9593,"depth":113,"text":9594},{"id":9750,"depth":113,"text":9751},{"id":9926,"depth":113,"text":9927,"children":10740},[10741,10742],{"id":7569,"depth":110,"text":7570},{"id":7059,"depth":110,"text":7060},{"id":10252,"depth":113,"text":10253},{"id":10377,"depth":113,"text":10378},{"id":10570,"depth":113,"text":10571},{"id":10625,"depth":113,"text":10626,"children":10747},[10748],{"id":10629,"depth":110,"text":10630},"Part 2 of our Nitro series where we level up the BrewStop food truck backend with validation, storage, middleware, and deployment-ready architecture.",{"type":12,"value":10751},[10752,10754,10762,10768,10780],[15,10753,541],{"id":540},[20,10755,8330,10756,9393,10758,9396,10760,9399],{},[546,10757,8333],{},[546,10759,8389],{},[546,10761,555],{},[20,10763,8330,10764,9404,10766,9408],{},[546,10765,8356],{},[546,10767,9407],{},[561,10769,10770,10772,10774,10776,10778],{},[564,10771,9267],{},[564,10773,9415],{},[564,10775,9270],{},[564,10777,9420],{},[564,10779,9423],{},[20,10781,9426],{},[3504,9373,3508,10783,10784,9374],"unjs","serverless",{},"\u002Fblog\u002Ffood-truck-p2",{"title":9383,"description":10749},"blog\u002Ffood-truck-p2","“Application Development”","prrsHwI_79_BIGLnC3EEU-7AfHq-Js5POFW1zkdLKVc",{"id":10792,"title":10793,"author":10794,"body":10795,"canonical":115,"categories":115,"date":10971,"description":10972,"excerpt":10973,"extension":118,"img":10984,"keywords":10985,"language":3510,"meta":10991,"navigation":129,"ogImage":115,"path":10992,"rating":275,"readTime":281,"seo":10993,"stem":10994,"tag":10995,"__hash__":10996},"blog\u002Fblog\u002Fmps-new-begins.md","Mashed Potato Studios: Crafting Digital Experiences That Actually Work",{"name":8,"img":10,"website":535},{"type":12,"value":10796,"toc":10963},[10797,10799,10812,10814,10818,10821,10826,10830,10833,10854,10857,10861,10868,10882,10887,10891,10894,10960],[15,10798,541],{"id":540},[20,10800,10801,10802,10805,10806,10811],{},"At ",[546,10803,10804],{},"Mashed Potato Studios",", we believe great digital products should be simple, effective, and memorable—just like comfort food done right. Our website, ",[203,10807,10810],{"href":10808,"rel":10809},"https:\u002F\u002Fmashedpotatostudios.com",[207],"mashedpotatostudios.com",", reflects who we are: a creative digital studio focused on building solutions that make sense for real people and real businesses.",[15,10813,748],{"id":747},[31,10815,10817],{"id":10816},"who-we-are","Who We Are",[20,10819,10820],{},"Mashed Potato Studios is a creative and technology-driven studio that helps businesses transform ideas into polished digital experiences. From concept to launch, we focus on clarity, usability, and performance—cutting out the unnecessary fluff and delivering what actually matters.",[24,10822,10823],{"type":631},[20,10824,10825],{},"Mashed Potato Studios works with startups, growing businesses, and established brands looking to level up their digital presence.",[31,10827,10829],{"id":10828},"what-we-do","What We Do",[20,10831,10832],{},"Our services are designed to meet clients where they are, whether they’re starting from scratch or refining an existing product.",[10834,10835,10836,10840],"blog-card",{},[2459,10837,10839],{"id":10838},"core-focus-areas","Core Focus Areas",[561,10841,10842,10845,10848,10851],{},[564,10843,10844],{},"Website design & development",[564,10846,10847],{},"Web applications & SaaS platforms",[564,10849,10850],{},"Branding & digital identity",[564,10852,10853],{},"Performance, scalability, and user experience",[20,10855,10856],{},"We combine clean design with modern development practices to ensure every project is fast, accessible, and future-ready.",[31,10858,10860],{"id":10859},"why-the-website-matters","Why the Website Matters",[20,10862,10863,10864,10867],{},"Your website is often the ",[546,10865,10866],{},"first impression"," of your brand. At Mashed Potato Studios, we design websites that:",[561,10869,10870,10873,10876,10879],{},[564,10871,10872],{},"Communicate value clearly",[564,10874,10875],{},"Load fast and work across all devices",[564,10877,10878],{},"Convert visitors into customers",[564,10880,10881],{},"Grow with your business",[24,10883,10884],{"type":26},[20,10885,10886],{},"A slow, cluttered, or outdated website can cost you credibility—and customers.",[31,10888,10890],{"id":10889},"our-approach-to-development","Our Approach to Development",[20,10892,10893],{},"We build with modern tools and best practices, focusing on maintainability and long-term success.",[47,10895,10898],{"className":1010,"code":10896,"filename":10897,"language":1012,"meta":55,"style":55},"const studioPhilosophy = {\n  design: \"Clean and purposeful\",\n  code: \"Scalable and maintainable\",\n  clients: \"Partners, not just projects\",\n};\n\nconsole.log(studioPhilosophy);\n","philosophy.ts",[39,10899,10900,10911,10921,10931,10941,10946,10950],{"__ignoreMap":55},[250,10901,10902,10904,10907,10909],{"class":252,"line":253},[250,10903,1181],{"class":786},[250,10905,10906],{"class":778}," studioPhilosophy",[250,10908,1187],{"class":786},[250,10910,1118],{"class":912},[250,10912,10913,10916,10919],{"class":252,"line":113},[250,10914,10915],{"class":912},"  design: ",[250,10917,10918],{"class":782},"\"Clean and purposeful\"",[250,10920,927],{"class":912},[250,10922,10923,10926,10929],{"class":252,"line":110},[250,10924,10925],{"class":912},"  code: ",[250,10927,10928],{"class":782},"\"Scalable and maintainable\"",[250,10930,927],{"class":912},[250,10932,10933,10936,10939],{"class":252,"line":269},[250,10934,10935],{"class":912},"  clients: ",[250,10937,10938],{"class":782},"\"Partners, not just projects\"",[250,10940,927],{"class":912},[250,10942,10943],{"class":252,"line":275},[250,10944,10945],{"class":912},"};\n",[250,10947,10948],{"class":252,"line":281},[250,10949,795],{"emptyLinePlaceholder":129},[250,10951,10952,10955,10957],{"class":252,"line":287},[250,10953,10954],{"class":912},"console.",[250,10956,1859],{"class":774},[250,10958,10959],{"class":912},"(studioPhilosophy);\n",[500,10961,10962],{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":55,"searchDepth":110,"depth":110,"links":10964},[10965,10966,10969,10970],{"id":10816,"depth":113,"text":10817},{"id":10828,"depth":113,"text":10829,"children":10967},[10968],{"id":10838,"depth":110,"text":10839},{"id":10859,"depth":113,"text":10860},{"id":10889,"depth":113,"text":10890},"2026-01-04","An inside look at Mashed Potato Studios—our mission, services, and how we help brands turn ideas into powerful digital products.",{"type":12,"value":10974},[10975,10977],[15,10976,541],{"id":540},[20,10978,10801,10979,10805,10981,10811],{},[546,10980,10804],{},[203,10982,10810],{"href":10808,"rel":10983},[207],"https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1553877522-43269d4ea984",[10986,10987,10988,10989,10990],"web development","branding","digital studio","startups","saas",{},"\u002Fblog\u002Fmps-new-begins",{"title":10793,"description":10972},"blog\u002Fmps-new-begins","Business","RTbMI38IFrp9Zg8xRFdCHiPkiqz_jlaEe9outeJD4n0",{"id":10998,"title":10999,"author":11000,"body":11001,"canonical":115,"categories":115,"date":11046,"description":11047,"excerpt":11048,"extension":118,"img":521,"keywords":11054,"language":524,"meta":11055,"navigation":129,"ogImage":115,"path":11056,"rating":11057,"readTime":110,"seo":11058,"stem":11059,"tag":11060,"__hash__":11061},"blog\u002Fblog\u002Fnew-vue-default.md","The New Vue Default",{"name":8,"website":9,"img":10},{"type":12,"value":11002,"toc":11044},[11003,11006,11009,11015,11018,11038,11041],[15,11004,10999],{"id":11005},"the-new-vue-default",[20,11007,11008],{},"Important notice: Vue will become default version on February 7, 2022.",[11010,11011,11012],"note",{},[20,11013,11014],{},"This was a major milestone for the Vue ecosystem, shifting from a library-first to a framework-first mindset.",[20,11016,11017],{},"I am actually excited about the current direction and vision that Vue is headed. Being a progressive framework means that implementation of how code is written is paramount for developer experience (DX). Look at how the new vue is implemented.",[161,11019,11022],{"icon":11020,"title":11021},"⚡️","Quick Install",[47,11023,11025],{"className":758,"code":11024,"language":761,"meta":55,"style":55},"npm install init vue@latest\n",[39,11026,11027],{"__ignoreMap":55},[250,11028,11029,11031,11033,11035],{"class":252,"line":253},[250,11030,4226],{"class":774},[250,11032,808],{"class":782},[250,11034,862],{"class":782},[250,11036,11037],{"class":782}," vue@latest\n",[20,11039,11040],{},"This provides a refreshing CLI experience that runs on Vite tooling under the hood. Integrating all the relevant tools from the community make the experience worth while..... just wish there was an turn off the bloatware (for more experienced persons who wanna get up and running quickly).",[500,11042,11043],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":55,"searchDepth":110,"depth":110,"links":11045},[],"2022-02-01","From a library to a Framework",{"type":12,"value":11049},[11050,11052],[15,11051,10999],{"id":11005},[20,11053,11008],{},[121,122,123,124,523,126],{},"\u002Fblog\u002Fnew-vue-default",4.8,{"title":10999,"description":11047},"blog\u002Fnew-vue-default","Framework","_ciURD2dpRkcxF78RbONV7kr3yG4Lj1VuIUZBl4WBf8",{"id":11063,"title":11064,"author":11065,"body":11066,"canonical":115,"categories":115,"date":11098,"description":11099,"excerpt":11100,"extension":118,"img":119,"keywords":11106,"language":524,"meta":11107,"navigation":129,"ogImage":115,"path":11108,"rating":131,"readTime":275,"seo":11109,"stem":11110,"tag":11111,"__hash__":11112},"blog\u002Fblog\u002Fnew-website.md","My New Website",{"name":8,"website":9,"img":10},{"type":12,"value":11067,"toc":11094},[11068,11071,11074,11077,11082,11085,11089],[31,11069,11070],{"id":3506},"Performance",[20,11072,11073],{},"Nuxt.js provides some unique advantages which allowed for it to be the main choice when creating my website.",[20,11075,11076],{},"Vue.js is my framework of choice in most cases. Nuxt.js provides an \"intutitve\" developer experience (DX).",[172,11078,11079],{},[20,11080,11081],{},"Nuxt.js has zero configuration, allowing for file-system routing, components auto-import and seo friendly for indexing.",[20,11083,11084],{},"Paramount to this application using the power modules- Content, that allows for my web app to using MDX for this blog section.",[31,11086,11088],{"id":11087},"future-updates","Future Updates",[10834,11090,11091],{},[20,11092,11093],{},"Addition of Youtube videos section will added shortly, Integration of Twitch API....",{"title":55,"searchDepth":110,"depth":110,"links":11095},[11096,11097],{"id":3506,"depth":113,"text":11070},{"id":11087,"depth":113,"text":11088},"2021-12-01","Built with Nuxt.js 2",{"type":12,"value":11101},[11102,11104],[31,11103,11070],{"id":3506},[20,11105,11073],{},[121,122,123,124,523,126],{},"\u002Fblog\u002Fnew-website",{"title":11064,"description":11099},"blog\u002Fnew-website","New Stack","QZONtmh4tVLWktddB0aVeaOkILpE6S43GCANap-Q3KM",{"id":11114,"title":11115,"author":11116,"body":11117,"canonical":115,"categories":115,"date":11328,"description":11329,"excerpt":115,"extension":118,"img":11330,"keywords":11331,"language":3510,"meta":11336,"navigation":129,"ogImage":115,"path":11337,"rating":275,"readTime":275,"seo":11338,"stem":11339,"tag":3515,"__hash__":11340},"blog\u002Fblog\u002Fnew-year-new-code.md","New Year, New Stack: Embracing TanStack Start & AI Integrations in 2026",{"name":8,"img":10,"website":535},{"type":12,"value":11118,"toc":11320},[11119,11121,11136,11138,11142,11148,11151,11156,11160,11165,11168,11182,11199,11202,11206,11209,11212,11226,11233,11236,11240,11250,11318],[15,11120,541],{"id":540},[20,11122,11123,11124,11127,11128,11131,11132,11135],{},"A new year always brings fresh energy—and in tech, that energy often shows up as better tools, smarter workflows, and new ways of thinking. As we step into ",[546,11125,11126],{},"2026",", this is the year of embracing modern frameworks like ",[546,11129,11130],{},"TanStack Start"," and leaning fully into ",[546,11133,11134],{},"AI integrations"," to build faster, more intelligent digital experiences.",[15,11137,748],{"id":747},[31,11139,11141],{"id":11140},"why-a-new-stack-matters","Why a New Stack Matters",[20,11143,11144,11145,2230],{},"The web is evolving quickly. Users expect instant feedback, seamless navigation, and personalized experiences. To meet those expectations, developers need tools that are ",[546,11146,11147],{},"performant, flexible, and future-proof",[20,11149,11150],{},"That’s where modern frameworks come in.",[24,11152,11153],{"type":631},[20,11154,11155],{},"Choosing the right framework isn’t about hype—it’s about long-term maintainability and developer experience.",[31,11157,11159],{"id":11158},"tanstack-start-a-fresh-way-to-build","TanStack Start: A Fresh Way to Build",[20,11161,11162,11164],{},[546,11163,11130],{}," represents a shift toward a more unified, type-safe, and scalable approach to building full-stack applications. It brings together ideas we already love—routing, data fetching, and server-first thinking—into a cohesive system.",[20,11166,11167],{},"Why it’s exciting:",[561,11169,11170,11173,11176,11179],{},[564,11171,11172],{},"End-to-end type safety",[564,11174,11175],{},"Powerful data management with TanStack Query",[564,11177,11178],{},"Server-first architecture without unnecessary complexity",[564,11180,11181],{},"Freedom from heavy abstractions",[10834,11183,11184,11188],{},[2459,11185,11187],{"id":11186},"what-tanstack-start-encourages","What TanStack Start Encourages",[561,11189,11190,11193,11196],{},[564,11191,11192],{},"Thinking in data, not just pages",[564,11194,11195],{},"Clear separation of concerns",[564,11197,11198],{},"Performance by default",[20,11200,11201],{},"It’s less about fighting the framework and more about building with confidence.",[31,11203,11205],{"id":11204},"ai-integrations-from-nice-to-have-to-essential","AI Integrations: From “Nice-to-Have” to Essential",[20,11207,11208],{},"AI is no longer experimental—it’s becoming foundational.",[20,11210,11211],{},"In 2026, AI integrations are helping teams:",[561,11213,11214,11217,11220,11223],{},[564,11215,11216],{},"Automate repetitive workflows",[564,11218,11219],{},"Enhance user experiences with personalization",[564,11221,11222],{},"Provide smarter search and recommendations",[564,11224,11225],{},"Improve developer productivity",[161,11227,11230],{"icon":11228,"title":11229},"🤖","AI as a Teammate",[20,11231,11232],{},"The best AI tools don’t replace developers—they amplify what developers can do.",[20,11234,11235],{},"From intelligent chat assistants to backend automation, AI is reshaping how products are built and how users interact with them.",[31,11237,11239],{"id":11238},"building-smarter-not-harder","Building Smarter, Not Harder",[20,11241,11242,11243,11246,11247,2230],{},"The real power comes from combining ",[546,11244,11245],{},"modern frameworks"," with ",[546,11248,11249],{},"AI-driven features",[47,11251,11254],{"className":1010,"code":11252,"filename":11253,"language":1012,"meta":55,"style":55},"const newYearStack = {\n  framework: \"TanStack Start\",\n  ai: \"Integrated at every layer\",\n  goal: \"Faster builds, smarter products\",\n};\n\nconsole.log(\"Welcome to 2026 🚀\");\n","future.ts",[39,11255,11256,11267,11277,11287,11297,11301,11305],{"__ignoreMap":55},[250,11257,11258,11260,11263,11265],{"class":252,"line":253},[250,11259,1181],{"class":786},[250,11261,11262],{"class":778}," newYearStack",[250,11264,1187],{"class":786},[250,11266,1118],{"class":912},[250,11268,11269,11272,11275],{"class":252,"line":113},[250,11270,11271],{"class":912},"  framework: ",[250,11273,11274],{"class":782},"\"TanStack Start\"",[250,11276,927],{"class":912},[250,11278,11279,11282,11285],{"class":252,"line":110},[250,11280,11281],{"class":912},"  ai: ",[250,11283,11284],{"class":782},"\"Integrated at every layer\"",[250,11286,927],{"class":912},[250,11288,11289,11292,11295],{"class":252,"line":269},[250,11290,11291],{"class":912},"  goal: ",[250,11293,11294],{"class":782},"\"Faster builds, smarter products\"",[250,11296,927],{"class":912},[250,11298,11299],{"class":252,"line":275},[250,11300,10945],{"class":912},[250,11302,11303],{"class":252,"line":281},[250,11304,795],{"emptyLinePlaceholder":129},[250,11306,11307,11309,11311,11313,11316],{"class":252,"line":287},[250,11308,10954],{"class":912},[250,11310,1859],{"class":774},[250,11312,1434],{"class":912},[250,11314,11315],{"class":782},"\"Welcome to 2026 🚀\"",[250,11317,1885],{"class":912},[500,11319,10962],{},{"title":55,"searchDepth":110,"depth":110,"links":11321},[11322,11323,11326,11327],{"id":11140,"depth":113,"text":11141},{"id":11158,"depth":113,"text":11159,"children":11324},[11325],{"id":11186,"depth":110,"text":11187},{"id":11204,"depth":113,"text":11205},{"id":11238,"depth":113,"text":11239},"2026-01-01","A New Year reflection on adopting modern frameworks like TanStack Start and integrating AI to build faster, smarter digital products.","https:\u002F\u002Fres.cloudinary.com\u002Fddszyeplg\u002Fimage\u002Fupload\u002Fv1767533051\u002FPXL_20251114_022510096_kq4fyh.jpg",[11332,11333,11334,10986,11335],"tanstack","tanstack start","ai integration",2026,{},"\u002Fblog\u002Fnew-year-new-code",{"title":11115,"description":11329},"blog\u002Fnew-year-new-code","HRNYSokixOaSOra7wi-C5D-PN0FTgyqYLz-TF3johDs",{"id":11342,"title":11343,"author":11344,"body":11345,"canonical":115,"categories":115,"date":12010,"description":12011,"excerpt":12012,"extension":118,"img":12028,"keywords":12029,"language":3510,"meta":12030,"navigation":129,"ogImage":115,"path":12031,"rating":275,"readTime":132,"seo":12032,"stem":12033,"tag":3515,"__hash__":12034},"blog\u002Fblog\u002Fnitro-build.md","How to Use Nitro: Build and Deploy Modern Servers Anywhere",{"name":8,"img":10,"website":535},{"type":12,"value":11346,"toc":11990},[11347,11349,11361,11368,11370,11374,11379,11407,11414,11421,11423,11427,11431,11436,11462,11465,11471,11479,11483,11486,11498,11508,11510,11514,11525,11529,11535,11569,11579,11588,11590,11594,11603,11607,11672,11678,11680,11684,11692,11696,11748,11751,11787,11797,11799,11803,11815,11822,11824,11828,11835,11847,11856,11859,11886,11892,11894,11898,11909,11912,11914,11918,11930,11933,11944,11946,11948,11953,11985,11988],[15,11348,541],{"id":540},[20,11350,11351,11352,11355,11356,11358,11359],{},"Modern web applications increasingly require flexible, performant backends that can run ",[546,11353,11354],{},"anywhere from edge servers to traditional Node hosts",". That’s where ",[546,11357,555],{}," comes in — a lightweight, runtime-agnostic server toolkit that lets you build APIs, server logic, and backend functionality with minimal configuration and deploy it across platforms seamlessly. Nitro works standalone or as the server engine under frameworks like Nuxt and Vite-based apps. ",[3540,11360,3543],{"index":3542},[20,11362,11363,11364,11367],{},"In this post, we’ll explore how to ",[546,11365,11366],{},"use Nitro",", walk through practical examples, and show you how to build and deploy real server-side logic using this powerful tool.",[15,11369,748],{"id":747},[31,11371,11373],{"id":11372},"what-is-nitro-and-why-use-it","What Is Nitro and Why Use It?",[20,11375,3555,11376,11378],{},[546,11377,555],{}," is a server engine and framework designed to make backend development simple, portable, and efficient. It gives you:",[561,11380,11381,11387,11393,11399,11402],{},[564,11382,11383,11386],{},[546,11384,11385],{},"Out-of-the-box server routing"," with filesystem-based handlers",[564,11388,11389,11392],{},[546,11390,11391],{},"Multi-runtime support"," — Node, Bun, Deno, and more",[564,11394,11395,11398],{},[546,11396,11397],{},"Zero-config deployment"," for many platforms",[564,11400,11401],{},"Hot reloading and developer experience conveniences",[564,11403,11404,11405],{},"Minimal overhead — compiled output is very small ",[3540,11406,3570],{"index":1198},[20,11408,11409,11410,11413],{},"Instead of wrestling with server setups or environment differences, Nitro lets you focus on your ",[546,11411,11412],{},"handlers and business logic"," while it handles the rest.",[24,11415,11416],{"type":631},[20,11417,11418,11419],{},"Nitro works both as a standalone server toolkit and as the server engine powering full-stack frameworks like Nuxt — giving you flexibility to choose how you build your backend. ",[3540,11420,3582],{"index":1226},[72,11422],{},[31,11424,11426],{"id":11425},"getting-started-with-nitro","Getting Started with Nitro",[2459,11428,11430],{"id":11429},"step-1-create-a-new-nitro-project","Step 1: Create a New Nitro Project",[20,11432,11433,11434],{},"Nitro provides a starter template to help you bootstrap quickly (and you can even try it in your browser with an online playground). ",[3540,11435,3630],{"index":1249},[47,11437,11439],{"className":758,"code":11438,"language":761,"meta":55,"style":55},"npx create-nitro-app nitro-app\ncd nitro-app\nnpm install\n",[39,11440,11441,11450,11456],{"__ignoreMap":55},[250,11442,11443,11445,11447],{"class":252,"line":253},[250,11444,4200],{"class":774},[250,11446,4203],{"class":782},[250,11448,11449],{"class":782}," nitro-app\n",[250,11451,11452,11454],{"class":252,"line":113},[250,11453,874],{"class":778},[250,11455,11449],{"class":782},[250,11457,11458,11460],{"class":252,"line":110},[250,11459,4226],{"class":774},[250,11461,896],{"class":782},[20,11463,11464],{},"Once installed, you’ll have a Nitro project with a directory structure like:",[47,11466,11469],{"className":11467,"code":11468,"language":52},[50],"server\u002Froutes\u002F\nserver\u002Fapi\u002F\nserver\u002Futils\u002F\nserver\u002Fplugins\u002F\nnitro.config.ts\n",[39,11470,11468],{"__ignoreMap":55},[20,11472,11473,11474,2390],{},"These folders are where you’ll place your routes, logic, utilities, and plugins. (",[203,11475,555],{"href":11476,"rel":11477,"title":11478},"https:\u002F\u002Fnitro.build\u002Fguide?utm_source=chatgpt.com",[207],"Docs - Nitro",[2459,11480,11482],{"id":11481},"step-2-run-the-development-server","Step 2: Run the Development Server",[20,11484,11485],{},"Nitro comes with a built-in development server that supports hot reload:",[47,11487,11488],{"className":758,"code":196,"language":761,"meta":55,"style":55},[39,11489,11490],{"__ignoreMap":55},[250,11491,11492,11494,11496],{"class":252,"line":253},[250,11493,4226],{"class":774},[250,11495,1707],{"class":782},[250,11497,1710],{"class":782},[20,11499,11500,11501,11504,11505,2390],{},"By default, Nitro starts on ",[39,11502,11503],{},"http:\u002F\u002Flocalhost:3000\u002F",". You’ll see your handlers and static files served automatically. (",[203,11506,555],{"href":11476,"rel":11507,"title":11478},[207],[72,11509],{},[31,11511,11513],{"id":11512},"filesystem-routing-api-routes-handlers","Filesystem Routing: API Routes & Handlers",[20,11515,11516,11517,11520,11521,11524],{},"Just like many modern server frameworks, Nitro uses ",[546,11518,11519],{},"filesystem routing",": files you create under ",[39,11522,11523],{},"server\u002Froutes\u002F"," automatically become endpoints.",[2459,11526,11528],{"id":11527},"example-create-a-simple-api-route","Example: Create a Simple API Route",[20,11530,11531,11532,1007],{},"Create a file named ",[39,11533,11534],{},"server\u002Fapi\u002Fhello.ts",[47,11536,11538],{"className":1010,"code":11537,"language":1012,"meta":55,"style":55},"export default defineEventHandler(() => {\n  return { message: \"Hello from Nitro!\" }\n})\n",[39,11539,11540,11554,11565],{"__ignoreMap":55},[250,11541,11542,11544,11546,11548,11550,11552],{"class":252,"line":253},[250,11543,1019],{"class":786},[250,11545,1022],{"class":786},[250,11547,1109],{"class":774},[250,11549,1112],{"class":912},[250,11551,1115],{"class":786},[250,11553,1118],{"class":912},[250,11555,11556,11558,11560,11563],{"class":252,"line":113},[250,11557,1123],{"class":786},[250,11559,5773],{"class":912},[250,11561,11562],{"class":782},"\"Hello from Nitro!\"",[250,11564,8690],{"class":912},[250,11566,11567],{"class":252,"line":110},[250,11568,474],{"class":912},[20,11570,11571,11572,11575,11576,2390],{},"Visit ",[39,11573,11574],{},"http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fhello"," in the browser to see the JSON response. Nitro does the routing for you based on file paths. (",[203,11577,555],{"href":11476,"rel":11578,"title":11478},[207],[20,11580,11581,11582,11584,11585,3698],{},"Nitro routes can be nested — create folders within ",[39,11583,11523],{}," to structure your API and handlers naturally. (",[203,11586,555],{"href":11476,"rel":11587,"title":11478},[207],[72,11589],{},[31,11591,11593],{"id":11592},"using-utility-functions","Using Utility Functions",[20,11595,11596,11597,2390],{},"Nitro auto-imports useful utilities that help you build more expressive handlers without boilerplate. For example, parsing query parameters, reading cookies, or handling headers can be done with helpers from h3 (Nitro’s HTTP utility library under the hood). (",[203,11598,11602],{"href":11599,"rel":11600,"title":11601},"https:\u002F\u002Fnuxt.com\u002Fdocs\u002F3.x\u002Fguide\u002Fconcepts\u002Fserver-engine?utm_source=chatgpt.com",[207],"Server Engine · Nuxt Concepts v3","Nuxt",[2459,11604,11606],{"id":11605},"example-reading-query-parameters","Example: Reading Query Parameters",[47,11608,11610],{"className":1010,"code":11609,"language":1012,"meta":55,"style":55},"export default defineEventHandler((event) => {\n  const { name } = getQuery(event)\n  return { greeting: `Hello ${name ?? \"World\"}` }\n})\n",[39,11611,11612,11630,11648,11668],{"__ignoreMap":55},[250,11613,11614,11616,11618,11620,11622,11624,11626,11628],{"class":252,"line":253},[250,11615,1019],{"class":786},[250,11617,1022],{"class":786},[250,11619,1109],{"class":774},[250,11621,1574],{"class":912},[250,11623,1443],{"class":1370},[250,11625,1446],{"class":912},[250,11627,1115],{"class":786},[250,11629,1118],{"class":912},[250,11631,11632,11634,11636,11638,11641,11643,11646],{"class":252,"line":113},[250,11633,1455],{"class":786},[250,11635,7768],{"class":912},[250,11637,6563],{"class":778},[250,11639,11640],{"class":912}," } ",[250,11642,1416],{"class":786},[250,11644,11645],{"class":774}," getQuery",[250,11647,9077],{"class":912},[250,11649,11650,11652,11655,11658,11660,11663,11666],{"class":252,"line":110},[250,11651,1123],{"class":786},[250,11653,11654],{"class":912}," { greeting: ",[250,11656,11657],{"class":782},"`Hello ${",[250,11659,6563],{"class":912},[250,11661,11662],{"class":786}," ??",[250,11664,11665],{"class":782}," \"World\"}`",[250,11667,8690],{"class":912},[250,11669,11670],{"class":252,"line":269},[250,11671,474],{"class":912},[20,11673,11571,11674,11677],{},[39,11675,11676],{},"\u002Fapi\u002Fhello?name=Vantol"," and Nitro will handle parsing automatically.",[72,11679],{},[31,11681,11683],{"id":11682},"configuration-with-nitroconfigts","Configuration with nitro.config.ts",[20,11685,11686,11687,2390],{},"Nitro can be customized via a configuration file. You might want to set runtime config values or adjust build behavior. (",[203,11688,555],{"href":11689,"rel":11690,"title":11691},"https:\u002F\u002Fnitro.build\u002Fguide\u002Fconfiguration\u002F?utm_source=chatgpt.com",[207],"Configuration - Nitro",[2459,11693,11695],{"id":11694},"example-runtime-config","Example: Runtime Config",[47,11697,11699],{"className":1010,"code":11698,"language":1012,"meta":55,"style":55},"import { defineNitroConfig } from \"nitro\u002Fconfig\";\n\nexport default defineNitroConfig({\n  runtimeConfig: {\n    apiToken: \"dev_token\"\n  }\n});\n",[39,11700,11701,11714,11718,11728,11732,11740,11744],{"__ignoreMap":55},[250,11702,11703,11705,11707,11709,11712],{"class":252,"line":253},[250,11704,1763],{"class":786},[250,11706,8904],{"class":912},[250,11708,1769],{"class":786},[250,11710,11711],{"class":782}," \"nitro\u002Fconfig\"",[250,11713,1379],{"class":912},[250,11715,11716],{"class":252,"line":113},[250,11717,795],{"emptyLinePlaceholder":129},[250,11719,11720,11722,11724,11726],{"class":252,"line":110},[250,11721,1019],{"class":786},[250,11723,1022],{"class":786},[250,11725,8922],{"class":774},[250,11727,1028],{"class":912},[250,11729,11730],{"class":252,"line":269},[250,11731,8929],{"class":912},[250,11733,11734,11737],{"class":252,"line":275},[250,11735,11736],{"class":912},"    apiToken: ",[250,11738,11739],{"class":782},"\"dev_token\"\n",[250,11741,11742],{"class":252,"line":281},[250,11743,986],{"class":912},[250,11745,11746],{"class":252,"line":287},[250,11747,1077],{"class":912},[20,11749,11750],{},"Then, within handlers you can access this config:",[47,11752,11754],{"className":1010,"code":11753,"language":1012,"meta":55,"style":55},"export default defineEventHandler((event) => {\n  return useRuntimeConfig().apiToken;\n});\n",[39,11755,11756,11774,11783],{"__ignoreMap":55},[250,11757,11758,11760,11762,11764,11766,11768,11770,11772],{"class":252,"line":253},[250,11759,1019],{"class":786},[250,11761,1022],{"class":786},[250,11763,1109],{"class":774},[250,11765,1574],{"class":912},[250,11767,1443],{"class":1370},[250,11769,1446],{"class":912},[250,11771,1115],{"class":786},[250,11773,1118],{"class":912},[250,11775,11776,11778,11780],{"class":252,"line":113},[250,11777,1123],{"class":786},[250,11779,8988],{"class":774},[250,11781,11782],{"class":912},"().apiToken;\n",[250,11784,11785],{"class":252,"line":110},[250,11786,1077],{"class":912},[20,11788,11789,11790,11793,11794,2390],{},"You can override these values with environment variables prefixed with ",[39,11791,11792],{},"NITRO_"," for different environments (development, staging, production). (",[203,11795,555],{"href":11689,"rel":11796,"title":11691},[207],[72,11798],{},[31,11800,11802],{"id":11801},"serving-static-files-and-custom-renderers","Serving Static Files and Custom Renderers",[20,11804,11805,11806,11809,11810,2390],{},"Nitro can serve static files like HTML, images, and assets from unconfigured folders. It also supports fallback renderers — for example serving an ",[39,11807,11808],{},"index.html"," for all non-API routes in single-page applications. (",[203,11811,555],{"href":11812,"rel":11813,"title":11814},"https:\u002F\u002Fv3.nitro.build\u002Fdocs\u002Frenderer?utm_source=chatgpt.com",[207],"Nitro Renderer - Nitro",[20,11816,11817,11818,11821],{},"This makes Nitro useful for ",[546,11819,11820],{},"hybrid applications"," that combine server APIs with frontend PWAs or SPAs.",[72,11823],{},[31,11825,11827],{"id":11826},"deploying-your-nitro-app","Deploying Your Nitro App",[20,11829,11830,11831,11834],{},"One of Nitro’s strengths is its ability to ",[546,11832,11833],{},"deploy to multiple environments with minimal changes",". After building your app:",[47,11836,11837],{"className":758,"code":10577,"language":761,"meta":55,"style":55},[39,11838,11839],{"__ignoreMap":55},[250,11840,11841,11843,11845],{"class":252,"line":253},[250,11842,4226],{"class":774},[250,11844,1707],{"class":782},[250,11846,3234],{"class":782},[20,11848,11849,11850,11852,11853,2390],{},"Nitro outputs a production-ready server in the ",[39,11851,10593],{}," directory that can run on various targets. (",[203,11854,555],{"href":11476,"rel":11855,"title":11478},[207],[20,11857,11858],{},"You can deploy to:",[561,11860,11861,11869,11875],{},[564,11862,11863,11865,11866],{},[546,11864,10599],{}," — run ",[39,11867,11868],{},".output\u002Fserver\u002Findex.mjs",[564,11870,11871,11874],{},[546,11872,11873],{},"Edge platforms"," — Cloudflare Workers, Deno Deploy with presets",[564,11876,11877,11880,11881,2390],{},[546,11878,11879],{},"Serverless providers"," — AWS Lambda, Vercel, Netlify, etc. (",[203,11882,555],{"href":11883,"rel":11884,"title":11885},"https:\u002F\u002Fnitro.build\u002Fdeploy?utm_source=chatgpt.com",[207],"Deploy - Nitro",[20,11887,11888,11889,2390],{},"Nitro often autodetects the hosting provider and configures itself accordingly — meaning fewer environment-specific tweaks. (",[203,11890,555],{"href":11883,"rel":11891,"title":11885},[207],[72,11893],{},[31,11895,11897],{"id":11896},"advanced-plugins-middleware","Advanced: Plugins & Middleware",[20,11899,11900,11901,11904,11905,11908],{},"If you need to extend Nitro’s behavior, you can create your own ",[546,11902,11903],{},"plugins"," in ",[39,11906,11907],{},"server\u002Fplugins\u002F",". These let you hook into the lifecycle of requests, register middleware, or augment server behavior in powerful ways.",[20,11910,11911],{},"This pattern helps modularize cross-cutting concerns like authentication, logging, or error reporting.",[72,11913],{},[31,11915,11917],{"id":11916},"example-full-api-frontend-integration","Example: Full API + Frontend Integration",[20,11919,11920,11921,11924,11925,2390],{},"You can integrate Nitro with frontend frameworks like Vite to create ",[546,11922,11923],{},"full-stack apps"," where your UI and backend live in one project. Nitro handles server APIs and static assets, while Vite serves HMR and frontend bundling. (",[203,11926,555],{"href":11927,"rel":11928,"title":11929},"https:\u002F\u002Fv3.nitro.build\u002Fdocs\u002Fquick-start?utm_source=chatgpt.com",[207],"Quick Start - Nitro",[20,11931,11932],{},"This setup enables:",[561,11934,11935,11938,11941],{},[564,11936,11937],{},"Server APIs without CORS complexity",[564,11939,11940],{},"Sharing code between backend and frontend",[564,11942,11943],{},"Fast development workflows with hot reload",[72,11945],{},[15,11947,3352],{"id":3351},[20,11949,11950,11952],{},[546,11951,555],{}," is an incredibly flexible and powerful tool for modern backend development. Whether you’re building APIs, hybrid apps, or full-stack projects, Nitro offers:",[561,11954,11955,11960,11965,11970,11975],{},[564,11956,11957],{},[546,11958,11959],{},"Filesystem routing and simple handlers",[564,11961,11962],{},[546,11963,11964],{},"Configurable runtime environments",[564,11966,11967],{},[546,11968,11969],{},"Cross-runtime deployment",[564,11971,11972],{},[546,11973,11974],{},"Out-of-the-box utility functions and developer experience",[564,11976,11977,1440,11980,2390],{},[546,11978,11979],{},"Easy integration with frontend frameworks",[203,11981,555],{"href":11982,"rel":11983,"title":11984},"https:\u002F\u002Fnitro.build\u002F?utm_source=chatgpt.com",[207],"Nitro - Next Generation Server Toolkit",[20,11986,11987],{},"With these capabilities, Nitro enables developers to build fast, scalable, and portable server apps without sacrificing simplicity — making it a strong choice for teams building modern web applications. 🚀",[500,11989,9304],{},{"title":55,"searchDepth":110,"depth":110,"links":11991},[11992,11993,11997,12000,12003,12006,12007,12008,12009],{"id":11372,"depth":113,"text":11373},{"id":11425,"depth":113,"text":11426,"children":11994},[11995,11996],{"id":11429,"depth":110,"text":11430},{"id":11481,"depth":110,"text":11482},{"id":11512,"depth":113,"text":11513,"children":11998},[11999],{"id":11527,"depth":110,"text":11528},{"id":11592,"depth":113,"text":11593,"children":12001},[12002],{"id":11605,"depth":110,"text":11606},{"id":11682,"depth":113,"text":11683,"children":12004},[12005],{"id":11694,"depth":110,"text":11695},{"id":11801,"depth":113,"text":11802},{"id":11826,"depth":113,"text":11827},{"id":11896,"depth":113,"text":11897},{"id":11916,"depth":113,"text":11917},"2026-01-20","An in-depth look at Nitro — what it is, how to use it to build servers and APIs, and practical steps to get started with real examples.",{"type":12,"value":12013},[12014,12016,12024],[15,12015,541],{"id":540},[20,12017,11351,12018,11355,12020,11358,12022],{},[546,12019,11354],{},[546,12021,555],{},[3540,12023,3543],{"index":3542},[20,12025,11363,12026,11367],{},[546,12027,11366],{},"https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1498050108023-c5249f4df085",[3504,10784,126,3509,9373],{},"\u002Fblog\u002Fnitro-build",{"title":11343,"description":12011},"blog\u002Fnitro-build","rDn6LRPhkhACMYyhkv_Kcexsf6uRlCOFgdqKwauBfhg",{"id":12036,"title":12037,"author":12038,"body":12039,"canonical":115,"categories":115,"date":12640,"description":12641,"excerpt":12642,"extension":118,"img":12662,"keywords":12663,"language":3510,"meta":12665,"navigation":129,"ogImage":115,"path":12666,"rating":275,"readTime":293,"seo":12667,"stem":12668,"tag":3515,"__hash__":12669},"blog\u002Fblog\u002Fnitro-plugins.md","Extending Nitro with Plugins: How to Build and Ideas for Real World Use",{"name":8,"img":10,"website":535},{"type":12,"value":12040,"toc":12622},[12041,12043,12052,12055,12066,12068,12072,12080,12084,12094,12097,12142,12150,12154,12163,12166,12251,12254,12341,12345,12348,12355,12358,12369,12372,12374,12381,12384,12492,12495,12497,12504,12507,12510,12513,12524,12526,12533,12536,12539,12577,12579,12586,12589,12592,12594,12598,12603,12605,12607,12610,12613,12619],[15,12042,541],{"id":540},[20,12044,12045,12046,12049,12050],{},"Nitro is a lightweight, runtime-agnostic server framework that lets you build fast APIs and backends deployable anywhere. But what happens when you need more than basic routes? That’s where ",[546,12047,12048],{},"Nitro plugins"," come in — a powerful way to hook into Nitro’s runtime and extend its behavior.:contentReference",[250,12051,3570],{"index":1198},[20,12053,12054],{},"In this post we’ll cover:",[561,12056,12057,12060,12063],{},[564,12058,12059],{},"What Nitro plugins are",[564,12061,12062],{},"How to create one",[564,12064,12065],{},"Useful plugin ideas you can build for real applications",[15,12067,748],{"id":747},[31,12069,12071],{"id":12070},"what-are-nitro-plugins","What Are Nitro Plugins?",[20,12073,12074,12075,12077,12078],{},"Nitro plugins allow you to extend Nitro’s runtime behavior in a modular and reusable way. They’re executed when the server starts and can hook into internal lifecycle events, letting you react to incoming requests, errors, responses, and more. Nitro registers plugins automatically from your ",[39,12076,11907],{}," directory or ones you list in the Nitro config.:contentReference",[250,12079,3582],{"index":1226},[31,12081,12083],{"id":12082},"how-to-create-a-simple-nitro-plugin","How to Create a Simple Nitro Plugin",[20,12085,12086,12087,12090,12091,12093],{},"Creating a Nitro plugin starts with the ",[39,12088,12089],{},"defineNitroPlugin"," function. Plugins receive the ",[39,12092,10277],{}," context — the runtime environment you can interact with.",[20,12095,12096],{},"For example, a simple plugin that logs when the server starts could look like:",[47,12098,12100],{"className":1010,"code":12099,"language":1012,"meta":55,"style":55},"\u002F\u002F server\u002Fplugins\u002Flogger.ts\nexport default defineNitroPlugin((nitroApp) => {\n  console.log(\"Nitro server initialized!\")\n})\n",[39,12101,12102,12107,12125,12138],{"__ignoreMap":55},[250,12103,12104],{"class":252,"line":253},[250,12105,12106],{"class":768},"\u002F\u002F server\u002Fplugins\u002Flogger.ts\n",[250,12108,12109,12111,12113,12115,12117,12119,12121,12123],{"class":252,"line":113},[250,12110,1019],{"class":786},[250,12112,1022],{"class":786},[250,12114,10272],{"class":774},[250,12116,1574],{"class":912},[250,12118,10277],{"class":1370},[250,12120,1446],{"class":912},[250,12122,1115],{"class":786},[250,12124,1118],{"class":912},[250,12126,12127,12129,12131,12133,12136],{"class":252,"line":110},[250,12128,1856],{"class":912},[250,12130,1859],{"class":774},[250,12132,1434],{"class":912},[250,12134,12135],{"class":782},"\"Nitro server initialized!\"",[250,12137,4852],{"class":912},[250,12139,12140],{"class":252,"line":269},[250,12141,474],{"class":912},[20,12143,12144,12145,12147,12148,2390],{},"Nitro runs your plugin as part of server initialization. You can even register plugins from custom directories by adding them to ",[39,12146,8892],{},".([nitro.build]",[250,12149,1226],{},[31,12151,12153],{"id":12152},"using-nitro-lifecycle-hooks","Using Nitro Lifecycle Hooks",[20,12155,12156,12157,12160,12161,2390],{},"Plugins become especially powerful when you use ",[546,12158,12159],{},"lifecycle hooks",". Nitro exposes several event hooks that let you react to server behavior — from incoming requests to errors and responses.([nitro.build]",[250,12162,1226],{},[20,12164,12165],{},"Here’s a plugin that logs every request URL:",[47,12167,12169],{"className":1010,"code":12168,"language":1012,"meta":55,"style":55},"\u002F\u002F server\u002Fplugins\u002Frequest-logger.ts\nexport default defineNitroPlugin((nitroApp) => {\n  nitroApp.hooks.hook(\"request\", (event) => {\n    console.log(`[Request] ${event.method} ${event.path}`)\n  })\n})\n",[39,12170,12171,12176,12194,12214,12243,12247],{"__ignoreMap":55},[250,12172,12173],{"class":252,"line":253},[250,12174,12175],{"class":768},"\u002F\u002F server\u002Fplugins\u002Frequest-logger.ts\n",[250,12177,12178,12180,12182,12184,12186,12188,12190,12192],{"class":252,"line":113},[250,12179,1019],{"class":786},[250,12181,1022],{"class":786},[250,12183,10272],{"class":774},[250,12185,1574],{"class":912},[250,12187,10277],{"class":1370},[250,12189,1446],{"class":912},[250,12191,1115],{"class":786},[250,12193,1118],{"class":912},[250,12195,12196,12198,12200,12202,12204,12206,12208,12210,12212],{"class":252,"line":110},[250,12197,10288],{"class":912},[250,12199,10291],{"class":774},[250,12201,1434],{"class":912},[250,12203,10296],{"class":782},[250,12205,10299],{"class":912},[250,12207,1443],{"class":1370},[250,12209,1446],{"class":912},[250,12211,1115],{"class":786},[250,12213,1118],{"class":912},[250,12215,12216,12218,12220,12222,12225,12227,12229,12231,12233,12235,12237,12239,12241],{"class":252,"line":269},[250,12217,10312],{"class":912},[250,12219,1859],{"class":774},[250,12221,1434],{"class":912},[250,12223,12224],{"class":782},"`[Request] ${",[250,12226,1443],{"class":912},[250,12228,2230],{"class":782},[250,12230,10342],{"class":912},[250,12232,10345],{"class":782},[250,12234,1443],{"class":912},[250,12236,2230],{"class":782},[250,12238,10352],{"class":912},[250,12240,2355],{"class":782},[250,12242,4852],{"class":912},[250,12244,12245],{"class":252,"line":275},[250,12246,10365],{"class":912},[250,12248,12249],{"class":252,"line":281},[250,12250,474],{"class":912},[20,12252,12253],{},"And you can also hook into errors to capture and log them:",[47,12255,12257],{"className":1010,"code":12256,"language":1012,"meta":55,"style":55},"\u002F\u002F server\u002Fplugins\u002Ferror-catcher.ts\nexport default defineNitroPlugin((nitroApp) => {\n  nitroApp.hooks.hook(\"error\", (error, { event }) => {\n    console.error(`Error at ${event.path}:`, error)\n  })\n})\n",[39,12258,12259,12264,12282,12310,12333,12337],{"__ignoreMap":55},[250,12260,12261],{"class":252,"line":253},[250,12262,12263],{"class":768},"\u002F\u002F server\u002Fplugins\u002Ferror-catcher.ts\n",[250,12265,12266,12268,12270,12272,12274,12276,12278,12280],{"class":252,"line":113},[250,12267,1019],{"class":786},[250,12269,1022],{"class":786},[250,12271,10272],{"class":774},[250,12273,1574],{"class":912},[250,12275,10277],{"class":1370},[250,12277,1446],{"class":912},[250,12279,1115],{"class":786},[250,12281,1118],{"class":912},[250,12283,12284,12286,12288,12290,12293,12295,12298,12301,12303,12306,12308],{"class":252,"line":110},[250,12285,10288],{"class":912},[250,12287,10291],{"class":774},[250,12289,1434],{"class":912},[250,12291,12292],{"class":782},"\"error\"",[250,12294,10299],{"class":912},[250,12296,12297],{"class":1370},"error",[250,12299,12300],{"class":912},", { ",[250,12302,1443],{"class":1370},[250,12304,12305],{"class":912}," }) ",[250,12307,1115],{"class":786},[250,12309,1118],{"class":912},[250,12311,12312,12314,12316,12318,12321,12323,12325,12327,12330],{"class":252,"line":269},[250,12313,10312],{"class":912},[250,12315,12297],{"class":774},[250,12317,1434],{"class":912},[250,12319,12320],{"class":782},"`Error at ${",[250,12322,1443],{"class":912},[250,12324,2230],{"class":782},[250,12326,10352],{"class":912},[250,12328,12329],{"class":782},"}:`",[250,12331,12332],{"class":912},", error)\n",[250,12334,12335],{"class":252,"line":275},[250,12336,10365],{"class":912},[250,12338,12339],{"class":252,"line":281},[250,12340,474],{"class":912},[31,12342,12344],{"id":12343},"plugin-ideas-you-can-build-today","Plugin Ideas You Can Build Today",[20,12346,12347],{},"Here are a handful of practical Nitro plugin ideas you could build into your app — especially handy for real projects like an e-commerce backend, food truck API, or admin dashboard API.",[2459,12349,12351,12352],{"id":12350},"_1-request-metrics-analytics-plugin","📊 1. ",[546,12353,12354],{},"Request Metrics & Analytics Plugin",[20,12356,12357],{},"Track performance of your endpoints in real time.",[561,12359,12360,12363,12366],{},[564,12361,12362],{},"Count hits per route",[564,12364,12365],{},"Record timing and latency",[564,12367,12368],{},"Write structured logs or push to analytics back end",[20,12370,12371],{},"Example benefit: track how many orders per hour your API gets and surface performance bottlenecks.",[72,12373],{},[2459,12375,12377,12378],{"id":12376},"_2-api-key-token-validation-plugin","🔐 2. ",[546,12379,12380],{},"API Key \u002F Token Validation Plugin",[20,12382,12383],{},"Centralize API key checks before your route handlers run.",[47,12385,12387],{"className":1010,"code":12386,"language":1012,"meta":55,"style":55},"\u002F\u002F server\u002Fplugins\u002Fapi-auth.ts\nexport default defineNitroPlugin((nitroApp) => {\n  nitroApp.hooks.hook(\"request\", (event) => {\n    const key = event.headers.get(\"x-api-key\")\n    if (!isValidKey(key)) {\n      throw createError({ statusCode: 401, statusMessage: \"Unauthorized\" })\n    }\n  })\n})\n",[39,12388,12389,12394,12412,12432,12450,12464,12480,12484,12488],{"__ignoreMap":55},[250,12390,12391],{"class":252,"line":253},[250,12392,12393],{"class":768},"\u002F\u002F server\u002Fplugins\u002Fapi-auth.ts\n",[250,12395,12396,12398,12400,12402,12404,12406,12408,12410],{"class":252,"line":113},[250,12397,1019],{"class":786},[250,12399,1022],{"class":786},[250,12401,10272],{"class":774},[250,12403,1574],{"class":912},[250,12405,10277],{"class":1370},[250,12407,1446],{"class":912},[250,12409,1115],{"class":786},[250,12411,1118],{"class":912},[250,12413,12414,12416,12418,12420,12422,12424,12426,12428,12430],{"class":252,"line":110},[250,12415,10288],{"class":912},[250,12417,10291],{"class":774},[250,12419,1434],{"class":912},[250,12421,10296],{"class":782},[250,12423,10299],{"class":912},[250,12425,1443],{"class":1370},[250,12427,1446],{"class":912},[250,12429,1115],{"class":786},[250,12431,1118],{"class":912},[250,12433,12434,12436,12438,12440,12442,12444,12446,12448],{"class":252,"line":269},[250,12435,6403],{"class":786},[250,12437,10497],{"class":778},[250,12439,1187],{"class":786},[250,12441,10502],{"class":912},[250,12443,6062],{"class":774},[250,12445,1434],{"class":912},[250,12447,10509],{"class":782},[250,12449,4852],{"class":912},[250,12451,12452,12454,12456,12458,12461],{"class":252,"line":275},[250,12453,6463],{"class":786},[250,12455,1440],{"class":912},[250,12457,1491],{"class":786},[250,12459,12460],{"class":774},"isValidKey",[250,12462,12463],{"class":912},"(key)) {\n",[250,12465,12466,12468,12470,12472,12474,12476,12478],{"class":252,"line":281},[250,12467,6475],{"class":786},[250,12469,1520],{"class":774},[250,12471,10172],{"class":912},[250,12473,10538],{"class":778},[250,12475,10177],{"class":912},[250,12477,10543],{"class":782},[250,12479,4599],{"class":912},[250,12481,12482],{"class":252,"line":287},[250,12483,3684],{"class":912},[250,12485,12486],{"class":252,"line":293},[250,12487,10365],{"class":912},[250,12489,12490],{"class":252,"line":299},[250,12491,474],{"class":912},[20,12493,12494],{},"This saves you from adding auth logic inside each route and ensures consistent security.",[72,12496],{},[2459,12498,12500,12501],{"id":12499},"_3-response-caching-plugin","📦 3. ",[546,12502,12503],{},"Response Caching Plugin",[20,12505,12506],{},"A plugin that caches successful GET responses in memory or Redis to speed up repeat calls.",[20,12508,12509],{},"Useful for endpoints like menus or business hours that don’t change often.",[20,12511,12512],{},"Example concept:",[561,12514,12515,12518,12521],{},[564,12516,12517],{},"Check cache on request",[564,12519,12520],{},"Bypass expensive data work if present",[564,12522,12523],{},"Store responses with TTL",[72,12525],{},[2459,12527,12529,12530],{"id":12528},"_4-request-body-sanitizer-plugin","📥 4. ",[546,12531,12532],{},"Request Body Sanitizer Plugin",[20,12534,12535],{},"Automatically sanitize or validate JSON bodies before they hit route handlers.",[20,12537,12538],{},"This helps enforce stricter API contracts and cleaner data at the router level.",[47,12540,12542],{"className":1010,"code":12541,"language":1012,"meta":55,"style":55},"nitroApp.hooks.hook(\"request\", (event) => {\n  sanitize(event.body)\n})\n",[39,12543,12544,12565,12573],{"__ignoreMap":55},[250,12545,12546,12549,12551,12553,12555,12557,12559,12561,12563],{"class":252,"line":253},[250,12547,12548],{"class":912},"nitroApp.hooks.",[250,12550,10291],{"class":774},[250,12552,1434],{"class":912},[250,12554,10296],{"class":782},[250,12556,10299],{"class":912},[250,12558,1443],{"class":1370},[250,12560,1446],{"class":912},[250,12562,1115],{"class":786},[250,12564,1118],{"class":912},[250,12566,12567,12570],{"class":252,"line":113},[250,12568,12569],{"class":774},"  sanitize",[250,12571,12572],{"class":912},"(event.body)\n",[250,12574,12575],{"class":252,"line":110},[250,12576,474],{"class":912},[72,12578],{},[2459,12580,12582,12583],{"id":12581},"_5-feature-flag-config-plugin","🛠 5. ",[546,12584,12585],{},"Feature Flag & Config Plugin",[20,12587,12588],{},"Load feature flags or custom runtime config from environment, remote store, or a file, and broadcast them server-wide.",[20,12590,12591],{},"Example: enable\u002Fdisable special holiday menus, seasonal pricing, or debug logging without code changes.",[72,12593],{},[31,12595,12597],{"id":12596},"when-plugins-run","When Plugins Run",[20,12599,12600,12601,2390],{},"Nitro plugins execute once during server startup and the hooks you register can fire at various points during request processing — giving you centralized control over behavior, logging, auth, or data flow.([v3.nitro.build]",[250,12602,1198],{},[72,12604],{},[15,12606,3352],{"id":3351},[20,12608,12609],{},"Nitro’s plugin system gives you the flexibility to extend your server logic beyond basic routes — letting you implement logging, auth, caching, monitoring, and more in reusable packages.",[20,12611,12612],{},"If you’re building an API that needs observability, security, or business logic centralized in one place, plugins make Nitro even more powerful without complicating your routes.🚀",[20,12614,12615,12616,1491],{},"Let me know if you want ",[546,12617,12618],{},"tutorial examples for those plugin ideas",[500,12620,12621],{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}",{"title":55,"searchDepth":110,"depth":110,"links":12623},[12624,12625,12626,12627,12639],{"id":12070,"depth":113,"text":12071},{"id":12082,"depth":113,"text":12083},{"id":12152,"depth":113,"text":12153},{"id":12343,"depth":113,"text":12344,"children":12628},[12629,12631,12633,12635,12637],{"id":12350,"depth":110,"text":12630},"📊 1. Request Metrics & Analytics Plugin",{"id":12376,"depth":110,"text":12632},"🔐 2. API Key \u002F Token Validation Plugin",{"id":12499,"depth":110,"text":12634},"📦 3. Response Caching Plugin",{"id":12528,"depth":110,"text":12636},"📥 4. Request Body Sanitizer Plugin",{"id":12581,"depth":110,"text":12638},"🛠 5. Feature Flag & Config Plugin",{"id":12596,"depth":113,"text":12597},"2026-01-29","Learn how to create Nitro plugins to extend your server’s behavior, with examples and practical plugin ideas you can build into your application.",{"type":12,"value":12643},[12644,12646,12652,12654],[15,12645,541],{"id":540},[20,12647,12045,12648,12049,12650],{},[546,12649,12048],{},[250,12651,3570],{"index":1198},[20,12653,12054],{},[561,12655,12656,12658,12660],{},[564,12657,12059],{},[564,12659,12062],{},[564,12661,12065],{},"https:\u002F\u002Fres.cloudinary.com\u002Fddszyeplg\u002Fimage\u002Fupload\u002Fv1769836111\u002FNitroFull_ww4pbg.png",[3504,12664,3507,3509,8234],"nitro plugin",{},"\u002Fblog\u002Fnitro-plugins",{"title":12037,"description":12641},"blog\u002Fnitro-plugins","1TtyjRpEqgljjXADT7cjszOkC3kzSLiBPCJnttW7QoY",{"id":12671,"title":12672,"author":12673,"body":12674,"canonical":115,"categories":115,"date":12959,"description":12960,"excerpt":12961,"extension":118,"img":12662,"keywords":12989,"language":3510,"meta":12990,"navigation":129,"ogImage":115,"path":12991,"rating":275,"readTime":316,"seo":12992,"stem":12993,"tag":3515,"__hash__":12994},"blog\u002Fblog\u002Fnitro-tutorial.md","Building Real Nitro Plugins: Step-by-Step Tutorials You Can Use Today",{"name":8,"img":10,"website":535},{"type":12,"value":12675,"toc":12948},[12676,12678,12689,12692,12706,12716,12720,12723,12765,12769,12772,12775,12781,12784,12788,12791,12794,12797,12800,12803,12806,12810,12813,12819,12822,12828,12830,12834,12837,12840,12843,12847,12850,12853,12859,12862,12865,12871,12873,12877,12880,12883,12886,12890,12893,12896,12899,12903,12906,12909,12912,12916,12919,12922,12926,12929,12932,12935,12938,12940,12943,12946],[15,12677,541],{"id":540},[20,12679,12680,12681,12684,12685,12688],{},"In the previous post, we explored ",[546,12682,12683],{},"what Nitro plugins are"," and why they’re one of Nitro’s most powerful features. In this tutorial-focused follow-up, we’ll ",[546,12686,12687],{},"build real Nitro plugins step by step"," — the kind you’d actually use in production.",[20,12690,12691],{},"By the end, you’ll know how to create plugins for:",[561,12693,12694,12697,12700,12703],{},[564,12695,12696],{},"Request logging",[564,12698,12699],{},"API key authentication",[564,12701,12702],{},"Response caching",[564,12704,12705],{},"Feature flags and runtime configuration",[20,12707,12708,12709,12711,12712,12715],{},"All examples use ",[546,12710,3510],{}," and work in ",[546,12713,12714],{},"Nuxt + Nitro"," or standalone Nitro apps.",[15,12717,12719],{"id":12718},"project-setup","Project Setup",[20,12721,12722],{},"Assuming a Nitro or Nuxt project, your folder structure should include:",[47,12724,12728],{"className":12725,"code":12726,"language":12727,"meta":55,"style":55},"language-txt shiki shiki-themes github-light github-dark","server\u002F\n  plugins\u002F\n    logger.ts\n    auth.ts\n    cache.ts\n    feature-flags.ts\nNitro automatically loads plugins from server\u002Fplugins\u002F.\n","txt",[39,12729,12730,12735,12740,12745,12750,12755,12760],{"__ignoreMap":55},[250,12731,12732],{"class":252,"line":253},[250,12733,12734],{},"server\u002F\n",[250,12736,12737],{"class":252,"line":113},[250,12738,12739],{},"  plugins\u002F\n",[250,12741,12742],{"class":252,"line":110},[250,12743,12744],{},"    logger.ts\n",[250,12746,12747],{"class":252,"line":269},[250,12748,12749],{},"    auth.ts\n",[250,12751,12752],{"class":252,"line":275},[250,12753,12754],{},"    cache.ts\n",[250,12756,12757],{"class":252,"line":281},[250,12758,12759],{},"    feature-flags.ts\n",[250,12761,12762],{"class":252,"line":287},[250,12763,12764],{},"Nitro automatically loads plugins from server\u002Fplugins\u002F.\n",[15,12766,12768],{"id":12767},"tutorial-1-request-logger-plugin","Tutorial 1: Request Logger Plugin",[20,12770,12771],{},"Goal\nLog every incoming request with method, path, and timing.",[20,12773,12774],{},"Step 1: Create the Plugin\n\u002F\u002F server\u002Fplugins\u002Flogger.ts\nexport default defineNitroPlugin((nitroApp) => {\nnitroApp.hooks.hook(\"request\", (event) => {\nconst start = Date.now()",[47,12776,12779],{"className":12777,"code":12778,"language":52},[50],"event.node.res.on(\"finish\", () => {\n  const duration = Date.now() - start\n  console.log(\n    `[${event.method}] ${event.path} - ${duration}ms`\n  )\n})\n",[39,12780,12778],{"__ignoreMap":55},[20,12782,12783],{},"})\n})",[31,12785,12787],{"id":12786},"what-this-does","What This Does",[20,12789,12790],{},"Hooks into every request",[20,12792,12793],{},"Measures request duration",[20,12795,12796],{},"Logs after the response finishes",[20,12798,12799],{},"When to Use\nDebugging slow endpoints",[20,12801,12802],{},"Monitoring API usage",[20,12804,12805],{},"Lightweight analytics",[31,12807,12809],{"id":12808},"tutorial-2-api-key-authentication-plugin","Tutorial 2: API Key Authentication Plugin",[20,12811,12812],{},"Goal\nProtect your API by validating an API key before routes run.",[20,12814,12815,12816,2390],{},"Step 1: Define a Validator\nconst VALID_KEYS = new Set(",[250,12817,12818],{},"\"dev-key-123\", \"prod-key-456\"",[20,12820,12821],{},"function isValidKey(key?: string | null) {\nreturn key && VALID_KEYS.has(key)\n}\nStep 2: Create the Plugin\n\u002F\u002F server\u002Fplugins\u002Fauth.ts\nexport default defineNitroPlugin((nitroApp) => {\nnitroApp.hooks.hook(\"request\", (event) => {\nconst apiKey = event.headers.get(\"x-api-key\")",[47,12823,12826],{"className":12824,"code":12825,"language":52},[50],"if (!isValidKey(apiKey)) {\n  throw createError({\n    statusCode: 401,\n    statusMessage: \"Invalid API Key\"\n  })\n}\n",[39,12827,12825],{"__ignoreMap":55},[20,12829,12783],{},[31,12831,12833],{"id":12832},"why-this-is-powerful","Why This Is Powerful",[20,12835,12836],{},"No auth logic in individual routes",[20,12838,12839],{},"Centralized, reusable security",[20,12841,12842],{},"Easy to extend with JWT or OAuth later",[31,12844,12846],{"id":12845},"tutorial-3-simple-response-caching-plugin","Tutorial 3: Simple Response Caching Plugin",[20,12848,12849],{},"Goal\nCache GET responses for frequently accessed endpoints (menus, products, settings).",[20,12851,12852],{},"Step 1: Create an In-Memory Cache\nconst cache = new Map\u003Cstring, { value: any; expires: number }>()\nconst TTL = 60_000 \u002F\u002F 60 seconds\nStep 2: Build the Plugin\n\u002F\u002F server\u002Fplugins\u002Fcache.ts\nexport default defineNitroPlugin((nitroApp) => {\nnitroApp.hooks.hook(\"request\", async (event) => {\nif (event.method !== \"GET\") return",[47,12854,12857],{"className":12855,"code":12856,"language":52},[50],"const key = event.path\nconst cached = cache.get(key)\n\nif (cached && cached.expires > Date.now()) {\n  return cached.value\n}\n",[39,12858,12856],{"__ignoreMap":55},[20,12860,12861],{},"})",[20,12863,12864],{},"nitroApp.hooks.hook(\"afterResponse\", (event, response) => {\nif (event.method !== \"GET\") return",[47,12866,12869],{"className":12867,"code":12868,"language":52},[50],"cache.set(event.path, {\n  value: response,\n  expires: Date.now() + TTL\n})\n",[39,12870,12868],{"__ignoreMap":55},[20,12872,12783],{},[31,12874,12876],{"id":12875},"real-world-use-case","Real-World Use Case",[20,12878,12879],{},"Food truck menu API",[20,12881,12882],{},"Business hours endpoint",[20,12884,12885],{},"Pricing data",[31,12887,12889],{"id":12888},"tutorial-4-feature-flags-plugin","Tutorial 4: Feature Flags Plugin",[20,12891,12892],{},"Goal\nEnable or disable features at runtime without touching routes.",[20,12894,12895],{},"Step 1: Define Flags\nconst flags = {\nseasonalMenu: true,\nenableDiscounts: false\n}\nStep 2: Attach Flags to Runtime\n\u002F\u002F server\u002Fplugins\u002Ffeature-flags.ts\nexport default defineNitroPlugin((nitroApp) => {\nnitroApp.hooks.hook(\"request\", (event) => {\nevent.context.features = flags\n})\n})\nStep 3: Use in a Route\nexport default defineEventHandler((event) => {\nif (event.context.features.seasonalMenu) {\nreturn { menu: \"Winter Specials\" }\n}",[20,12897,12898],{},"return { menu: \"Standard Menu\" }\n})",[31,12900,12902],{"id":12901},"why-this-matters","Why This Matters",[20,12904,12905],{},"Toggle features instantly",[20,12907,12908],{},"Safe rollouts",[20,12910,12911],{},"Environment-based behavior",[31,12913,12915],{"id":12914},"combining-plugins-for-a-real-app","Combining Plugins for a Real App",[20,12917,12918],{},"For a coffee shop or food truck API, you might use:",[20,12920,12921],{},"Plugin\tPurpose\nLogger\tTrack traffic & performance\nAuth\tSecure admin endpoints\nCache\tSpeed up menu reads\nFeature Flags\tEnable promotions\nAll without bloating your route handlers.",[31,12923,12925],{"id":12924},"best-practices","Best Practices",[20,12927,12928],{},"Keep plugins focused on one responsibility",[20,12930,12931],{},"Avoid heavy computation in request hooks",[20,12933,12934],{},"Use plugins for cross-cutting concerns, not business logic",[20,12936,12937],{},"Prefer plugins over middleware duplication\n::",[15,12939,3352],{"id":3351},[20,12941,12942],{},"Nitro plugins give you framework-level power without framework-level complexity. Instead of repeating logic in routes, plugins let you build reusable, centralized behaviors that scale with your app.",[20,12944,12945],{},"If you’re serious about building maintainable APIs — whether for Nuxt apps, serverless deployments, or edge runtimes — mastering Nitro plugins is a game changer. 🚀",[500,12947,502],{},{"title":55,"searchDepth":110,"depth":110,"links":12949},[12950,12951,12952,12953,12954,12955,12956,12957,12958],{"id":12786,"depth":113,"text":12787},{"id":12808,"depth":113,"text":12809},{"id":12832,"depth":113,"text":12833},{"id":12845,"depth":113,"text":12846},{"id":12875,"depth":113,"text":12876},{"id":12888,"depth":113,"text":12889},{"id":12901,"depth":113,"text":12902},{"id":12914,"depth":113,"text":12915},{"id":12924,"depth":113,"text":12925},"2026-01-30","Hands-on Nitro plugin tutorials showing how to build logging, authentication, caching, and feature flag plugins for real-world applications.",{"type":12,"value":12962},[12963,12965,12971,12973,12983],[15,12964,541],{"id":540},[20,12966,12680,12967,12684,12969,12688],{},[546,12968,12683],{},[546,12970,12687],{},[20,12972,12691],{},[561,12974,12975,12977,12979,12981],{},[564,12976,12696],{},[564,12978,12699],{},[564,12980,12702],{},[564,12982,12705],{},[20,12984,12708,12985,12711,12987,12715],{},[546,12986,3510],{},[546,12988,12714],{},[3504,11903,3507,3508,8234],{},"\u002Fblog\u002Fnitro-tutorial",{"title":12672,"description":12960},"blog\u002Fnitro-tutorial","i4pPWumhRzJriakSE9zevlb2qtVUOftePtjEXoFGaY0",{"id":12996,"title":12997,"author":12998,"body":12999,"canonical":115,"categories":115,"date":13728,"description":13729,"excerpt":13730,"extension":118,"img":12028,"keywords":13744,"language":3510,"meta":13749,"navigation":129,"ogImage":115,"path":13750,"rating":275,"readTime":132,"seo":13751,"stem":13752,"tag":3515,"__hash__":13753},"blog\u002Fblog\u002Fnuxt-42-steady-movements-to-5.md","Evaluating Nuxt 4.2: How the Latest Stable Release Empowers Modern Developers",{"name":8,"img":10,"website":535},{"type":12,"value":13000,"toc":13707},[13001,13003,13014,13020,13022,13026,13033,13047,13050,13055,13057,13061,13071,13074,13076,13087,13091,13215,13218,13220,13224,13227,13243,13246,13249,13251,13255,13258,13265,13269,13280,13284,13295,13298,13300,13304,13311,13347,13350,13361,13364,13366,13370,13376,13387,13390,13392,13396,13403,13407,13418,13452,13455,13457,13461,13464,13467,13638,13641,13652,13655,13657,13661,13664,13684,13687,13689,13691,13694,13701,13704],[15,13002,541],{"id":540},[20,13004,13005,13006,13009,13010,13013],{},"Nuxt has consistently positioned itself as one of the most developer-friendly frameworks in the Vue ecosystem. With the release of ",[546,13007,13008],{},"Nuxt 4",", the framework doubled down on clarity, performance, and full-stack flexibility. The latest stable release, ",[546,13011,13012],{},"Nuxt 4.2",", continues that trajectory—not by reinventing the framework, but by polishing the parts developers interact with every single day.",[20,13015,13016,13017,2230],{},"This post evaluates Nuxt 4.2 from a practical standpoint: what’s new, why it matters, and how these changes help developers build ",[546,13018,13019],{},"faster, more resilient, and more maintainable applications",[15,13021,748],{"id":747},[31,13023,13025],{"id":13024},"nuxt-42-in-context","Nuxt 4.2 in Context",[20,13027,13028,13029,13032],{},"Nuxt 4.2 is best understood as a ",[546,13030,13031],{},"developer-experience release",". Rather than introducing breaking changes or radical APIs, it focuses on:",[561,13034,13035,13038,13041,13044],{},[564,13036,13037],{},"More control over async behavior",[564,13039,13040],{},"Better debugging ergonomics",[564,13042,13043],{},"Smarter performance optimizations",[564,13045,13046],{},"Stronger alignment with Vite and Nitro",[20,13048,13049],{},"These improvements target real-world pain points that surface as applications grow.",[24,13051,13052],{"type":631},[20,13053,13054],{},"Nuxt 4.2 is a stable minor release, meaning it’s safe to adopt for production apps already running on Nuxt 4.",[72,13056],{},[31,13058,13060],{"id":13059},"abortable-data-fetching-a-real-world-necessity","Abortable Data Fetching: A Real-World Necessity",[20,13062,13063,13064,13067,13068,2230],{},"One of the most impactful additions in Nuxt 4.2 is ",[546,13065,13066],{},"native support for aborting async data requests"," using ",[39,13069,13070],{},"AbortController",[20,13072,13073],{},"In dynamic interfaces—search inputs, filters, route transitions—users often trigger multiple requests in quick succession. Without cancellation, older requests can overwrite newer state.",[2459,13075,12902],{"id":12901},[561,13077,13078,13081,13084],{},[564,13079,13080],{},"Prevents race conditions",[564,13082,13083],{},"Eliminates unnecessary network traffic",[564,13085,13086],{},"Keeps UI state predictable",[31,13088,13090],{"id":13089},"code-example","Code Example",[47,13092,13095],{"className":1010,"code":13093,"filename":13094,"language":1012,"meta":55,"style":55},"\u003Cscript setup lang=\"ts\">\nconst controller = new AbortController()\n\nconst { data } = await useAsyncData('users', () =>\n  $fetch('\u002Fapi\u002Fusers', {\n    signal: controller.signal\n  })\n)\n\n\u002F\u002F Cancel the request if the user navigates away\ncontroller.abort()\n\u003C\u002Fscript>\n","abortable-fetch.ts",[39,13096,13097,13112,13128,13132,13161,13173,13178,13182,13186,13190,13195,13205],{"__ignoreMap":55},[250,13098,13099,13101,13104,13106,13109],{"class":252,"line":253},[250,13100,1962],{"class":786},[250,13102,13103],{"class":912},"script setup lang",[250,13105,1416],{"class":786},[250,13107,13108],{"class":782},"\"ts\"",[250,13110,13111],{"class":786},">\n",[250,13113,13114,13116,13119,13121,13123,13126],{"class":252,"line":113},[250,13115,1181],{"class":786},[250,13117,13118],{"class":778}," controller",[250,13120,1187],{"class":786},[250,13122,1568],{"class":786},[250,13124,13125],{"class":774}," AbortController",[250,13127,4861],{"class":912},[250,13129,13130],{"class":252,"line":110},[250,13131,795],{"emptyLinePlaceholder":129},[250,13133,13134,13136,13138,13141,13143,13145,13147,13150,13152,13155,13158],{"class":252,"line":269},[250,13135,1181],{"class":786},[250,13137,7768],{"class":912},[250,13139,13140],{"class":778},"data",[250,13142,11640],{"class":912},[250,13144,1416],{"class":786},[250,13146,1463],{"class":786},[250,13148,13149],{"class":774}," useAsyncData",[250,13151,1434],{"class":912},[250,13153,13154],{"class":782},"'users'",[250,13156,13157],{"class":912},", () ",[250,13159,13160],{"class":786},"=>\n",[250,13162,13163,13166,13168,13171],{"class":252,"line":275},[250,13164,13165],{"class":774},"  $fetch",[250,13167,1434],{"class":912},[250,13169,13170],{"class":782},"'\u002Fapi\u002Fusers'",[250,13172,4454],{"class":912},[250,13174,13175],{"class":252,"line":281},[250,13176,13177],{"class":912},"    signal: controller.signal\n",[250,13179,13180],{"class":252,"line":287},[250,13181,10365],{"class":912},[250,13183,13184],{"class":252,"line":293},[250,13185,4852],{"class":912},[250,13187,13188],{"class":252,"line":299},[250,13189,795],{"emptyLinePlaceholder":129},[250,13191,13192],{"class":252,"line":132},[250,13193,13194],{"class":768},"\u002F\u002F Cancel the request if the user navigates away\n",[250,13196,13197,13200,13203],{"class":252,"line":310},[250,13198,13199],{"class":912},"controller.",[250,13201,13202],{"class":774},"abort",[250,13204,4861],{"class":912},[250,13206,13207,13210,13213],{"class":252,"line":316},[250,13208,13209],{"class":786},"\u003C\u002F",[250,13211,13212],{"class":912},"script",[250,13214,13111],{"class":786},[20,13216,13217],{},"This feature brings Nuxt’s data handling closer to native browser behavior—something developers have wanted for a long time.",[72,13219],{},[31,13221,13223],{"id":13222},"improved-error-handling-during-development","Improved Error Handling During Development",[20,13225,13226],{},"Debugging is a daily activity, and Nuxt 4.2 makes it less disruptive. When an error occurs during development, Nuxt now displays:",[561,13228,13229,13236],{},[564,13230,13231,13232,13235],{},"Your ",[546,13233,13234],{},"custom error page"," (what users would see)",[564,13237,13238,13239,13242],{},"A ",[546,13240,13241],{},"toggleable technical overlay"," with stack traces and diagnostics",[20,13244,13245],{},"This dual-view approach keeps developers grounded in the user experience while still providing deep technical insight.",[20,13247,13248],{},"Poor error visibility often leads to longer debugging sessions and fragile fixes—Nuxt 4.2 directly addresses this.\n::",[72,13250],{},[31,13252,13254],{"id":13253},"performance-improvements-that-scale","Performance Improvements That Scale",[20,13256,13257],{},"Performance optimizations in Nuxt 4.2 are subtle but powerful, especially for production-grade applications.",[20,13259,13260,13261,13264],{},"One standout improvement is ",[546,13262,13263],{},"async data handler extraction"," (experimental). Nuxt can now move certain async logic into build-time chunks, preventing unnecessary JavaScript from being shipped to the browser.",[2459,13266,13268],{"id":13267},"developer-impact","Developer Impact",[561,13270,13271,13274,13277],{},[564,13272,13273],{},"Smaller client bundles",[564,13275,13276],{},"Faster initial page loads",[564,13278,13279],{},"Better SEO and Lighthouse scores",[2459,13281,13283],{"id":13282},"performance-wins-in-practice","Performance Wins in Practice",[561,13285,13286,13289,13292],{},[564,13287,13288],{},"Reduced client-side JavaScript",[564,13290,13291],{},"Faster cold starts",[564,13293,13294],{},"Improved perceived performance for users\n::",[20,13296,13297],{},"These gains matter most at scale—when milliseconds start adding up across thousands of users.",[72,13299],{},[31,13301,13303],{"id":13302},"vite-environment-api-preparing-for-the-future","Vite Environment API: Preparing for the Future",[20,13305,13306,13307,13310],{},"Nuxt 4.2 introduces optional support for Vite’s new ",[546,13308,13309],{},"Environment API",", allowing more control over environment-specific behavior.",[47,13312,13314],{"className":1010,"code":13313,"language":1012,"meta":55,"style":55},"export default defineNuxtConfig({\n  experimental: {\n    viteEnvironmentApi: true\n  }\n})\n",[39,13315,13316,13326,13331,13339,13343],{"__ignoreMap":55},[250,13317,13318,13320,13322,13324],{"class":252,"line":253},[250,13319,1019],{"class":786},[250,13321,1022],{"class":786},[250,13323,1025],{"class":774},[250,13325,1028],{"class":912},[250,13327,13328],{"class":252,"line":113},[250,13329,13330],{"class":912},"  experimental: {\n",[250,13332,13333,13336],{"class":252,"line":110},[250,13334,13335],{"class":912},"    viteEnvironmentApi: ",[250,13337,13338],{"class":778},"true\n",[250,13340,13341],{"class":252,"line":269},[250,13342,986],{"class":912},[250,13344,13345],{"class":252,"line":275},[250,13346,474],{"class":912},[20,13348,13349],{},"This is particularly valuable for teams managing:",[561,13351,13352,13355,13358],{},[564,13353,13354],{},"Multiple deployment stages",[564,13356,13357],{},"Complex environment variables",[564,13359,13360],{},"Shared infrastructure across apps",[20,13362,13363],{},"While still experimental, it signals Nuxt’s commitment to evolving alongside Vite rather than lagging behind it.",[72,13365],{},[31,13367,13369],{"id":13368},"a-more-modular-nitro-architecture","A More Modular Nitro Architecture",[20,13371,13372,13373,13375],{},"Behind the scenes, Nuxt 4.2 improves how ",[546,13374,555],{},"—Nuxt’s server engine—is integrated. By extracting server integration into a dedicated package, Nuxt gains:",[561,13377,13378,13381,13384],{},[564,13379,13380],{},"Cleaner separation between frontend and backend concerns",[564,13382,13383],{},"More flexibility for future runtime targets",[564,13385,13386],{},"Improved long-term maintainability",[20,13388,13389],{},"Most developers won’t notice this day to day, but it lays the groundwork for future innovation without breaking existing apps.",[72,13391],{},[31,13393,13395],{"id":13394},"typescript-tooling-improvements","TypeScript Tooling Improvements",[20,13397,13398,13399,13402],{},"TypeScript users benefit from experimental tooling enhancements in Nuxt 4.2. These improvements focus on ",[546,13400,13401],{},"editor intelligence",", making large codebases easier to navigate.",[2459,13404,13406],{"id":13405},"what-developers-gain","What Developers Gain",[561,13408,13409,13412,13415],{},[564,13410,13411],{},"Better go-to-definition support",[564,13413,13414],{},"Smarter component renaming",[564,13416,13417],{},"Improved navigation between server routes and client fetches",[47,13419,13421],{"className":1010,"code":13420,"language":1012,"meta":55,"style":55},"export default defineNuxtConfig({\n  experimental: {\n    typescriptPlugin: true\n  }\n})\n",[39,13422,13423,13433,13437,13444,13448],{"__ignoreMap":55},[250,13424,13425,13427,13429,13431],{"class":252,"line":253},[250,13426,1019],{"class":786},[250,13428,1022],{"class":786},[250,13430,1025],{"class":774},[250,13432,1028],{"class":912},[250,13434,13435],{"class":252,"line":113},[250,13436,13330],{"class":912},[250,13438,13439,13442],{"class":252,"line":110},[250,13440,13441],{"class":912},"    typescriptPlugin: ",[250,13443,13338],{"class":778},[250,13445,13446],{"class":252,"line":269},[250,13447,986],{"class":912},[250,13449,13450],{"class":252,"line":275},[250,13451,474],{"class":912},[20,13453,13454],{},"For teams working in TypeScript-first environments, these changes reduce cognitive overhead and make refactoring safer.",[72,13456],{},[31,13458,13460],{"id":13459},"practical-pattern-search-with-request-cancellation","Practical Pattern: Search With Request Cancellation",[20,13462,13463],{},"Here’s a real-world pattern enabled by Nuxt 4.2’s abortable requests:",[31,13465,13090],{"id":13466},"code-example-1",[47,13468,13471],{"className":1010,"code":13469,"filename":13470,"language":1012,"meta":55,"style":55},"\u003Cscript setup lang=\"ts\">\nconst query = ref('')\nlet controller = new AbortController()\n\nwatch(query, async () => {\n  controller.abort()\n  controller = new AbortController()\n\n  await useAsyncData(\n    ['search', query.value],\n    () =>\n      $fetch(`\u002Fapi\u002Fsearch?q=${query.value}`, {\n        signal: controller.signal\n      })\n  )\n})\n\u003C\u002Fscript>\n","search-pattern.ts",[39,13472,13473,13485,13504,13519,13523,13539,13548,13561,13565,13573,13584,13591,13613,13618,13622,13626,13630],{"__ignoreMap":55},[250,13474,13475,13477,13479,13481,13483],{"class":252,"line":253},[250,13476,1962],{"class":786},[250,13478,13103],{"class":912},[250,13480,1416],{"class":786},[250,13482,13108],{"class":782},[250,13484,13111],{"class":786},[250,13486,13487,13489,13492,13494,13497,13499,13502],{"class":252,"line":113},[250,13488,1181],{"class":786},[250,13490,13491],{"class":778}," query",[250,13493,1187],{"class":786},[250,13495,13496],{"class":774}," ref",[250,13498,1434],{"class":912},[250,13500,13501],{"class":782},"''",[250,13503,4852],{"class":912},[250,13505,13506,13508,13511,13513,13515,13517],{"class":252,"line":110},[250,13507,1949],{"class":786},[250,13509,13510],{"class":912}," controller ",[250,13512,1416],{"class":786},[250,13514,1568],{"class":786},[250,13516,13125],{"class":774},[250,13518,4861],{"class":912},[250,13520,13521],{"class":252,"line":269},[250,13522,795],{"emptyLinePlaceholder":129},[250,13524,13525,13528,13531,13533,13535,13537],{"class":252,"line":275},[250,13526,13527],{"class":774},"watch",[250,13529,13530],{"class":912},"(query, ",[250,13532,1437],{"class":786},[250,13534,2015],{"class":912},[250,13536,1115],{"class":786},[250,13538,1118],{"class":912},[250,13540,13541,13544,13546],{"class":252,"line":281},[250,13542,13543],{"class":912},"  controller.",[250,13545,13202],{"class":774},[250,13547,4861],{"class":912},[250,13549,13550,13553,13555,13557,13559],{"class":252,"line":287},[250,13551,13552],{"class":912},"  controller ",[250,13554,1416],{"class":786},[250,13556,1568],{"class":786},[250,13558,13125],{"class":774},[250,13560,4861],{"class":912},[250,13562,13563],{"class":252,"line":293},[250,13564,795],{"emptyLinePlaceholder":129},[250,13566,13567,13569,13571],{"class":252,"line":299},[250,13568,1565],{"class":786},[250,13570,13149],{"class":774},[250,13572,1982],{"class":912},[250,13574,13575,13578,13581],{"class":252,"line":132},[250,13576,13577],{"class":912},"    [",[250,13579,13580],{"class":782},"'search'",[250,13582,13583],{"class":912},", query.value],\n",[250,13585,13586,13589],{"class":252,"line":310},[250,13587,13588],{"class":912},"    () ",[250,13590,13160],{"class":786},[250,13592,13593,13596,13598,13601,13604,13606,13609,13611],{"class":252,"line":316},[250,13594,13595],{"class":774},"      $fetch",[250,13597,1434],{"class":912},[250,13599,13600],{"class":782},"`\u002Fapi\u002Fsearch?q=${",[250,13602,13603],{"class":912},"query",[250,13605,2230],{"class":782},[250,13607,13608],{"class":912},"value",[250,13610,2355],{"class":782},[250,13612,4454],{"class":912},[250,13614,13615],{"class":252,"line":322},[250,13616,13617],{"class":912},"        signal: controller.signal\n",[250,13619,13620],{"class":252,"line":328},[250,13621,2204],{"class":912},[250,13623,13624],{"class":252,"line":334},[250,13625,10040],{"class":912},[250,13627,13628],{"class":252,"line":340},[250,13629,474],{"class":912},[250,13631,13632,13634,13636],{"class":252,"line":346},[250,13633,13209],{"class":786},[250,13635,13212],{"class":912},[250,13637,13111],{"class":786},[20,13639,13640],{},"This approach:",[561,13642,13643,13646,13649],{},[564,13644,13645],{},"Cancels outdated requests automatically",[564,13647,13648],{},"Keeps results in sync with user input",[564,13650,13651],{},"Improves perceived responsiveness",[20,13653,13654],{},"It’s a small API change with a huge real-world payoff.",[72,13656],{},[31,13658,13660],{"id":13659},"who-benefits-most-from-nuxt-42","Who Benefits Most From Nuxt 4.2?",[20,13662,13663],{},"Nuxt 4.2 shines for:",[561,13665,13666,13672,13678,13681],{},[564,13667,13668,13669],{},"Teams building ",[546,13670,13671],{},"interactive, data-driven UIs",[564,13673,13674,13675],{},"Developers optimizing for ",[546,13676,13677],{},"performance and SEO",[564,13679,13680],{},"TypeScript-heavy projects",[564,13682,13683],{},"Full-stack Nuxt apps using Nitro",[20,13685,13686],{},"If you’re already on Nuxt 4, upgrading to 4.2 is a low-risk way to gain immediate DX and performance benefits.\n::",[72,13688],{},[31,13690,3352],{"id":3351},[20,13692,13693],{},"Nuxt 4.2 is a thoughtful, developer-focused release. It doesn’t chase trends—it solves real problems. By improving async control, debugging clarity, performance, and tooling, Nuxt 4.2 makes everyday development smoother and production applications more robust.",[20,13695,13696,13697,13700],{},"For developers who value ",[546,13698,13699],{},"clarity, performance, and long-term maintainability",", Nuxt 4.2 is not just an upgrade—it’s a refinement of everything that makes Nuxt a pleasure to use.",[20,13702,13703],{},"If you’re building serious Vue applications in 2026, Nuxt 4.2 deserves a place at the center of your stack.",[500,13705,13706],{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":55,"searchDepth":110,"depth":110,"links":13708},[13709,13710,13713,13714,13715,13719,13720,13721,13724,13725,13726,13727],{"id":13024,"depth":113,"text":13025},{"id":13059,"depth":113,"text":13060,"children":13711},[13712],{"id":12901,"depth":110,"text":12902},{"id":13089,"depth":113,"text":13090},{"id":13222,"depth":113,"text":13223},{"id":13253,"depth":113,"text":13254,"children":13716},[13717,13718],{"id":13267,"depth":110,"text":13268},{"id":13282,"depth":110,"text":13283},{"id":13302,"depth":113,"text":13303},{"id":13368,"depth":113,"text":13369},{"id":13394,"depth":113,"text":13395,"children":13722},[13723],{"id":13405,"depth":110,"text":13406},{"id":13459,"depth":113,"text":13460},{"id":13466,"depth":113,"text":13090},{"id":13659,"depth":113,"text":13660},{"id":3351,"depth":113,"text":3352},"2026-01-09","A deep evaluation of Nuxt 4.2, exploring new features, performance improvements, and why this release makes building modern Vue applications faster and more reliable.",{"type":12,"value":13731},[13732,13734,13740],[15,13733,541],{"id":540},[20,13735,13005,13736,13009,13738,13013],{},[546,13737,13008],{},[546,13739,13012],{},[20,13741,13016,13742,2230],{},[546,13743,13019],{},[13745,13746,13747,3504,126,13748],"nuxt 4","nuxt 4.2","vue","web performance",{},"\u002Fblog\u002Fnuxt-42-steady-movements-to-5",{"title":12997,"description":13729},"blog\u002Fnuxt-42-steady-movements-to-5","xF7X0JRedqolAzpj1780Epatp6IDaI6ADDC3FG4FqCQ",{"id":13755,"title":13756,"author":13757,"body":13758,"canonical":115,"categories":115,"date":3470,"description":18676,"excerpt":18677,"extension":118,"img":3502,"keywords":18705,"language":3510,"meta":18712,"navigation":129,"ogImage":115,"path":18713,"rating":275,"readTime":334,"seo":18714,"stem":18715,"tag":3515,"__hash__":18716},"blog\u002Fblog\u002Fnuxt-auth-guide.md","Complete Guide to Authentication in Nuxt 4: From Basics to Production",{"name":8,"img":10,"website":535},{"type":12,"value":13759,"toc":18657},[13760,13762,13765,13770,13793,13796,13798,13802,13805,13873,13878,13880,13882,13885,13913,13916,13947,13962,13964,13968,13971,13975,14103,14111,14118,14141,14143,14147,14150,14155,14630,14636,14638,14642,14645,14650,15042,15047,15206,15208,15212,15216,15221,15593,15597,15602,15898,15902,15907,15959,15963,15968,16257,16259,16263,16266,16270,16624,16630,16632,16636,16639,16646,16651,16676,16680,16808,16813,16912,16914,16918,16923,17580,17585,18166,18168,18172,18175,18427,18429,18433,18436,18486,18488,18492,18566,18568,18570,18573,18605,18608,18634,18637,18651,18654],[15,13761,541],{"id":540},[20,13763,13764],{},"Every production application needs authentication. Yet it's one of the most commonly botched parts of web development—poorly implemented auth leads to security vulnerabilities, frustrated users, and late-night debugging sessions.",[20,13766,13767,13768,1007],{},"In this comprehensive guide, we'll cover everything you need to know about authentication in ",[546,13769,13008],{},[561,13771,13772,13775,13778,13781,13784,13787,13790],{},[564,13773,13774],{},"Authentication strategies and when to use each",[564,13776,13777],{},"Implementing session-based auth",[564,13779,13780],{},"JWT authentication flow",[564,13782,13783],{},"OAuth with GitHub and Google",[564,13785,13786],{},"Protecting API routes",[564,13788,13789],{},"Secure password handling",[564,13791,13792],{},"Type-safe auth with TypeScript",[20,13794,13795],{},"Let's build a complete auth system for our BrewStop application.",[15,13797,748],{"id":747},[31,13799,13801],{"id":13800},"understanding-authentication-strategies","Understanding Authentication Strategies",[20,13803,13804],{},"Before we write code, let's understand the three main authentication strategies:",[645,13806,13807,13823],{},[648,13808,13809],{},[651,13810,13811,13814,13817,13820],{},[654,13812,13813],{},"Strategy",[654,13815,13816],{},"Best For",[654,13818,13819],{},"Pros",[654,13821,13822],{},"Cons",[666,13824,13825,13841,13857],{},[651,13826,13827,13832,13835,13838],{},[671,13828,13829],{},[546,13830,13831],{},"Session",[671,13833,13834],{},"Traditional web apps",[671,13836,13837],{},"Simple, familiar UX",[671,13839,13840],{},"CSRF concerns, server state",[651,13842,13843,13848,13851,13854],{},[671,13844,13845],{},[546,13846,13847],{},"JWT",[671,13849,13850],{},"SPAs, APIs, mobile",[671,13852,13853],{},"Stateless, scalable",[671,13855,13856],{},"Token management complexity",[651,13858,13859,13864,13867,13870],{},[671,13860,13861],{},[546,13862,13863],{},"OAuth",[671,13865,13866],{},"Social login",[671,13868,13869],{},"Frictionless, trusted",[671,13871,13872],{},"Third-party dependency",[24,13874,13875],{"type":631},[20,13876,13877],{},"For most Nuxt applications, a hybrid approach works best: JWT for API authentication, OAuth for social login, and session-like behavior via cookies.",[72,13879],{},[31,13881,4182],{"id":4181},[20,13883,13884],{},"Let's create a fresh Nuxt project with authentication in mind.",[47,13886,13888],{"className":758,"code":13887,"filename":760,"language":761,"meta":55,"style":55},"npx nuxi@latest init brewstop-auth\ncd brewstop-auth\nnpm install\n",[39,13889,13890,13901,13907],{"__ignoreMap":55},[250,13891,13892,13894,13896,13898],{"class":252,"line":253},[250,13893,4200],{"class":774},[250,13895,859],{"class":782},[250,13897,862],{"class":782},[250,13899,13900],{"class":782}," brewstop-auth\n",[250,13902,13903,13905],{"class":252,"line":113},[250,13904,874],{"class":778},[250,13906,13900],{"class":782},[250,13908,13909,13911],{"class":252,"line":110},[250,13910,4226],{"class":774},[250,13912,896],{"class":782},[20,13914,13915],{},"We'll need some additional packages:",[47,13917,13919],{"className":758,"code":13918,"filename":760,"language":761,"meta":55,"style":55},"npm install @sidebase\u002Fnuxt-auth next-auth@beta jose\nnpm install -D @types\u002Fnode\n",[39,13920,13921,13936],{"__ignoreMap":55},[250,13922,13923,13925,13927,13930,13933],{"class":252,"line":253},[250,13924,4226],{"class":774},[250,13926,808],{"class":782},[250,13928,13929],{"class":782}," @sidebase\u002Fnuxt-auth",[250,13931,13932],{"class":782}," next-auth@beta",[250,13934,13935],{"class":782}," jose\n",[250,13937,13938,13940,13942,13944],{"class":252,"line":113},[250,13939,4226],{"class":774},[250,13941,808],{"class":782},[250,13943,4243],{"class":778},[250,13945,13946],{"class":782}," @types\u002Fnode\n",[161,13948,13951],{"icon":13949,"title":13950},"🔐","Security First",[20,13952,13953,13954,13957,13958,13961],{},"We're using ",[39,13955,13956],{},"@sidebase\u002Fnuxt-auth"," which provides first-class support for NextAuth.js in Nuxt, and ",[39,13959,13960],{},"jose"," for JWT operations.",[72,13963],{},[31,13965,13967],{"id":13966},"step-2-configure-nuxt-auth","Step 2: Configure Nuxt Auth",[20,13969,13970],{},"Add the auth module to your Nuxt configuration.",[20,13972,1092,13973,1007],{},[39,13974,1006],{},[47,13976,13978],{"className":1010,"code":13977,"filename":1006,"language":1012,"meta":55,"style":55},"export default defineNuxtConfig({\n  modules: [\"@sidebase\u002Fnuxt-auth\"],\n  \n  auth: {\n    provider: {\n      type: \"authjs\",\n      defaultProvider: \"credentials\",\n    },\n    globalAppMiddleware: true,\n  },\n  \n  runtimeConfig: {\n    authSecret: process.env.AUTH_SECRET,\n    public: {\n      authOrigin: process.env.AUTH_ORIGIN || \"http:\u002F\u002Flocalhost:3000\",\n    },\n  },\n});\n",[39,13979,13980,13990,14001,14005,14010,14015,14025,14035,14040,14049,14053,14057,14061,14071,14075,14091,14095,14099],{"__ignoreMap":55},[250,13981,13982,13984,13986,13988],{"class":252,"line":253},[250,13983,1019],{"class":786},[250,13985,1022],{"class":786},[250,13987,1025],{"class":774},[250,13989,1028],{"class":912},[250,13991,13992,13995,13998],{"class":252,"line":113},[250,13993,13994],{"class":912},"  modules: [",[250,13996,13997],{"class":782},"\"@sidebase\u002Fnuxt-auth\"",[250,13999,14000],{"class":912},"],\n",[250,14002,14003],{"class":252,"line":110},[250,14004,1053],{"class":912},[250,14006,14007],{"class":252,"line":269},[250,14008,14009],{"class":912},"  auth: {\n",[250,14011,14012],{"class":252,"line":275},[250,14013,14014],{"class":912},"    provider: {\n",[250,14016,14017,14020,14023],{"class":252,"line":281},[250,14018,14019],{"class":912},"      type: ",[250,14021,14022],{"class":782},"\"authjs\"",[250,14024,927],{"class":912},[250,14026,14027,14030,14033],{"class":252,"line":287},[250,14028,14029],{"class":912},"      defaultProvider: ",[250,14031,14032],{"class":782},"\"credentials\"",[250,14034,927],{"class":912},[250,14036,14037],{"class":252,"line":293},[250,14038,14039],{"class":912},"    },\n",[250,14041,14042,14045,14047],{"class":252,"line":299},[250,14043,14044],{"class":912},"    globalAppMiddleware: ",[250,14046,1066],{"class":778},[250,14048,927],{"class":912},[250,14050,14051],{"class":252,"line":132},[250,14052,1048],{"class":912},[250,14054,14055],{"class":252,"line":310},[250,14056,1053],{"class":912},[250,14058,14059],{"class":252,"line":316},[250,14060,8929],{"class":912},[250,14062,14063,14066,14069],{"class":252,"line":322},[250,14064,14065],{"class":912},"    authSecret: process.env.",[250,14067,14068],{"class":778},"AUTH_SECRET",[250,14070,927],{"class":912},[250,14072,14073],{"class":252,"line":328},[250,14074,8934],{"class":912},[250,14076,14077,14080,14083,14086,14089],{"class":252,"line":334},[250,14078,14079],{"class":912},"      authOrigin: process.env.",[250,14081,14082],{"class":778},"AUTH_ORIGIN",[250,14084,14085],{"class":786}," ||",[250,14087,14088],{"class":782}," \"http:\u002F\u002Flocalhost:3000\"",[250,14090,927],{"class":912},[250,14092,14093],{"class":252,"line":340},[250,14094,14039],{"class":912},[250,14096,14097],{"class":252,"line":346},[250,14098,1048],{"class":912},[250,14100,14101],{"class":252,"line":352},[250,14102,1077],{"class":912},[24,14104,14105],{"type":26},[20,14106,14107,14108,14110],{},"Never commit your ",[39,14109,14068],{},". Use environment variables for all secrets.",[20,14112,14113,14114,14117],{},"Create a ",[39,14115,14116],{},".env"," file:",[47,14119,14121],{"className":758,"code":14120,"filename":14116,"language":761,"meta":55,"style":55},"AUTH_SECRET=your-super-secret-key-change-in-production\nAUTH_ORIGIN=http:\u002F\u002Flocalhost:3000\n",[39,14122,14123,14132],{"__ignoreMap":55},[250,14124,14125,14127,14129],{"class":252,"line":253},[250,14126,14068],{"class":912},[250,14128,1416],{"class":786},[250,14130,14131],{"class":782},"your-super-secret-key-change-in-production\n",[250,14133,14134,14136,14138],{"class":252,"line":113},[250,14135,14082],{"class":912},[250,14137,1416],{"class":786},[250,14139,14140],{"class":782},"http:\u002F\u002Flocalhost:3000\n",[72,14142],{},[31,14144,14146],{"id":14145},"step-3-create-the-authentication-backend","Step 3: Create the Authentication Backend",[20,14148,14149],{},"We'll build a credentials-based auth system with proper password hashing.",[20,14151,1092,14152,1007],{},[39,14153,14154],{},"server\u002Futils\u002Fauth.ts",[47,14156,14158],{"className":1010,"code":14157,"filename":14154,"language":1012,"meta":55,"style":55},"import { SignJWT, jwtVerify } from \"jose\";\nimport { hash, verify } from \"@node-rs\u002Fargon2\";\n\nconst secret = new TextEncoder().encode(\n  process.env.AUTH_SECRET || \"fallback-secret\"\n);\n\nexport async function hashPassword(password: string): Promise\u003Cstring> {\n  return hash(password, {\n    memoryCost: 19456,\n    timeCost: 2,\n    outputLen: 32,\n    parallelism: 1,\n  });\n}\n\nexport async function verifyPassword(hash: string, password: string): Promise\u003Cboolean> {\n  return verify(hash, password);\n}\n\nexport async function createToken(userId: string, email: string): Promise\u003Cstring> {\n  return new SignJWT({ userId, email })\n    .setProtectedHeader({ alg: \"HS256\" })\n    .setIssuedAt()\n    .setExpirationTime(\"7d\")\n    .sign(secret);\n}\n\nexport async function verifyToken(token: string): Promise\u003C{ userId: string; email: string } | null> {\n  try {\n    const { payload } = await jwtVerify(token, secret);\n    return payload as { userId: string; email: string };\n  } catch {\n    return null;\n  }\n}\n",[39,14159,14160,14174,14188,14192,14213,14225,14229,14233,14267,14277,14287,14296,14306,14315,14319,14323,14327,14368,14378,14382,14386,14427,14439,14454,14463,14477,14487,14491,14495,14549,14556,14577,14605,14614,14622,14626],{"__ignoreMap":55},[250,14161,14162,14164,14167,14169,14172],{"class":252,"line":253},[250,14163,1763],{"class":786},[250,14165,14166],{"class":912}," { SignJWT, jwtVerify } ",[250,14168,1769],{"class":786},[250,14170,14171],{"class":782}," \"jose\"",[250,14173,1379],{"class":912},[250,14175,14176,14178,14181,14183,14186],{"class":252,"line":113},[250,14177,1763],{"class":786},[250,14179,14180],{"class":912}," { hash, verify } ",[250,14182,1769],{"class":786},[250,14184,14185],{"class":782}," \"@node-rs\u002Fargon2\"",[250,14187,1379],{"class":912},[250,14189,14190],{"class":252,"line":110},[250,14191,795],{"emptyLinePlaceholder":129},[250,14193,14194,14196,14199,14201,14203,14206,14208,14211],{"class":252,"line":269},[250,14195,1181],{"class":786},[250,14197,14198],{"class":778}," secret",[250,14200,1187],{"class":786},[250,14202,1568],{"class":786},[250,14204,14205],{"class":774}," TextEncoder",[250,14207,1647],{"class":912},[250,14209,14210],{"class":774},"encode",[250,14212,1982],{"class":912},[250,14214,14215,14218,14220,14222],{"class":252,"line":275},[250,14216,14217],{"class":912},"  process.env.",[250,14219,14068],{"class":778},[250,14221,14085],{"class":786},[250,14223,14224],{"class":782}," \"fallback-secret\"\n",[250,14226,14227],{"class":252,"line":281},[250,14228,1885],{"class":912},[250,14230,14231],{"class":252,"line":287},[250,14232,795],{"emptyLinePlaceholder":129},[250,14234,14235,14237,14239,14241,14244,14246,14249,14251,14253,14255,14257,14259,14261,14264],{"class":252,"line":293},[250,14236,1019],{"class":786},[250,14238,2012],{"class":786},[250,14240,1845],{"class":786},[250,14242,14243],{"class":774}," hashPassword",[250,14245,1434],{"class":912},[250,14247,14248],{"class":1370},"password",[250,14250,1007],{"class":786},[250,14252,2506],{"class":778},[250,14254,2390],{"class":912},[250,14256,1007],{"class":786},[250,14258,1571],{"class":774},[250,14260,1962],{"class":912},[250,14262,14263],{"class":778},"string",[250,14265,14266],{"class":912},"> {\n",[250,14268,14269,14271,14274],{"class":252,"line":299},[250,14270,1123],{"class":786},[250,14272,14273],{"class":774}," hash",[250,14275,14276],{"class":912},"(password, {\n",[250,14278,14279,14282,14285],{"class":252,"line":132},[250,14280,14281],{"class":912},"    memoryCost: ",[250,14283,14284],{"class":778},"19456",[250,14286,927],{"class":912},[250,14288,14289,14292,14294],{"class":252,"line":310},[250,14290,14291],{"class":912},"    timeCost: ",[250,14293,1226],{"class":778},[250,14295,927],{"class":912},[250,14297,14298,14301,14304],{"class":252,"line":316},[250,14299,14300],{"class":912},"    outputLen: ",[250,14302,14303],{"class":778},"32",[250,14305,927],{"class":912},[250,14307,14308,14311,14313],{"class":252,"line":322},[250,14309,14310],{"class":912},"    parallelism: ",[250,14312,1198],{"class":778},[250,14314,927],{"class":912},[250,14316,14317],{"class":252,"line":328},[250,14318,6749],{"class":912},[250,14320,14321],{"class":252,"line":334},[250,14322,991],{"class":912},[250,14324,14325],{"class":252,"line":340},[250,14326,795],{"emptyLinePlaceholder":129},[250,14328,14329,14331,14333,14335,14338,14340,14343,14345,14347,14349,14351,14353,14355,14357,14359,14361,14363,14366],{"class":252,"line":346},[250,14330,1019],{"class":786},[250,14332,2012],{"class":786},[250,14334,1845],{"class":786},[250,14336,14337],{"class":774}," verifyPassword",[250,14339,1434],{"class":912},[250,14341,14342],{"class":1370},"hash",[250,14344,1007],{"class":786},[250,14346,2506],{"class":778},[250,14348,7128],{"class":912},[250,14350,14248],{"class":1370},[250,14352,1007],{"class":786},[250,14354,2506],{"class":778},[250,14356,2390],{"class":912},[250,14358,1007],{"class":786},[250,14360,1571],{"class":774},[250,14362,1962],{"class":912},[250,14364,14365],{"class":778},"boolean",[250,14367,14266],{"class":912},[250,14369,14370,14372,14375],{"class":252,"line":352},[250,14371,1123],{"class":786},[250,14373,14374],{"class":774}," verify",[250,14376,14377],{"class":912},"(hash, password);\n",[250,14379,14380],{"class":252,"line":358},[250,14381,991],{"class":912},[250,14383,14384],{"class":252,"line":364},[250,14385,795],{"emptyLinePlaceholder":129},[250,14387,14388,14390,14392,14394,14397,14399,14402,14404,14406,14408,14411,14413,14415,14417,14419,14421,14423,14425],{"class":252,"line":370},[250,14389,1019],{"class":786},[250,14391,2012],{"class":786},[250,14393,1845],{"class":786},[250,14395,14396],{"class":774}," createToken",[250,14398,1434],{"class":912},[250,14400,14401],{"class":1370},"userId",[250,14403,1007],{"class":786},[250,14405,2506],{"class":778},[250,14407,7128],{"class":912},[250,14409,14410],{"class":1370},"email",[250,14412,1007],{"class":786},[250,14414,2506],{"class":778},[250,14416,2390],{"class":912},[250,14418,1007],{"class":786},[250,14420,1571],{"class":774},[250,14422,1962],{"class":912},[250,14424,14263],{"class":778},[250,14426,14266],{"class":912},[250,14428,14429,14431,14433,14436],{"class":252,"line":376},[250,14430,1123],{"class":786},[250,14432,1568],{"class":786},[250,14434,14435],{"class":774}," SignJWT",[250,14437,14438],{"class":912},"({ userId, email })\n",[250,14440,14441,14443,14446,14449,14452],{"class":252,"line":382},[250,14442,4604],{"class":912},[250,14444,14445],{"class":774},"setProtectedHeader",[250,14447,14448],{"class":912},"({ alg: ",[250,14450,14451],{"class":782},"\"HS256\"",[250,14453,4599],{"class":912},[250,14455,14456,14458,14461],{"class":252,"line":388},[250,14457,4604],{"class":912},[250,14459,14460],{"class":774},"setIssuedAt",[250,14462,4861],{"class":912},[250,14464,14465,14467,14470,14472,14475],{"class":252,"line":393},[250,14466,4604],{"class":912},[250,14468,14469],{"class":774},"setExpirationTime",[250,14471,1434],{"class":912},[250,14473,14474],{"class":782},"\"7d\"",[250,14476,4852],{"class":912},[250,14478,14479,14481,14484],{"class":252,"line":399},[250,14480,4604],{"class":912},[250,14482,14483],{"class":774},"sign",[250,14485,14486],{"class":912},"(secret);\n",[250,14488,14489],{"class":252,"line":405},[250,14490,991],{"class":912},[250,14492,14493],{"class":252,"line":410},[250,14494,795],{"emptyLinePlaceholder":129},[250,14496,14497,14499,14501,14503,14506,14508,14511,14513,14515,14517,14519,14521,14524,14526,14528,14530,14533,14535,14537,14539,14541,14544,14547],{"class":252,"line":415},[250,14498,1019],{"class":786},[250,14500,2012],{"class":786},[250,14502,1845],{"class":786},[250,14504,14505],{"class":774}," verifyToken",[250,14507,1434],{"class":912},[250,14509,14510],{"class":1370},"token",[250,14512,1007],{"class":786},[250,14514,2506],{"class":778},[250,14516,2390],{"class":912},[250,14518,1007],{"class":786},[250,14520,1571],{"class":774},[250,14522,14523],{"class":912},"\u003C{ ",[250,14525,14401],{"class":1370},[250,14527,1007],{"class":786},[250,14529,2506],{"class":778},[250,14531,14532],{"class":912},"; ",[250,14534,14410],{"class":1370},[250,14536,1007],{"class":786},[250,14538,2506],{"class":778},[250,14540,11640],{"class":912},[250,14542,14543],{"class":786},"|",[250,14545,14546],{"class":778}," null",[250,14548,14266],{"class":912},[250,14550,14551,14554],{"class":252,"line":420},[250,14552,14553],{"class":786},"  try",[250,14555,1118],{"class":912},[250,14557,14558,14560,14562,14565,14567,14569,14571,14574],{"class":252,"line":426},[250,14559,6403],{"class":786},[250,14561,7768],{"class":912},[250,14563,14564],{"class":778},"payload",[250,14566,11640],{"class":912},[250,14568,1416],{"class":786},[250,14570,1463],{"class":786},[250,14572,14573],{"class":774}," jwtVerify",[250,14575,14576],{"class":912},"(token, secret);\n",[250,14578,14579,14582,14585,14587,14589,14591,14593,14595,14597,14599,14601,14603],{"class":252,"line":431},[250,14580,14581],{"class":786},"    return",[250,14583,14584],{"class":912}," payload ",[250,14586,1472],{"class":786},[250,14588,7768],{"class":912},[250,14590,14401],{"class":1370},[250,14592,1007],{"class":786},[250,14594,2506],{"class":778},[250,14596,14532],{"class":912},[250,14598,14410],{"class":1370},[250,14600,1007],{"class":786},[250,14602,2506],{"class":778},[250,14604,5784],{"class":912},[250,14606,14607,14610,14612],{"class":252,"line":436},[250,14608,14609],{"class":912},"  } ",[250,14611,2164],{"class":786},[250,14613,1118],{"class":912},[250,14615,14616,14618,14620],{"class":252,"line":442},[250,14617,14581],{"class":786},[250,14619,14546],{"class":778},[250,14621,1379],{"class":912},[250,14623,14624],{"class":252,"line":447},[250,14625,986],{"class":912},[250,14627,14628],{"class":252,"line":453},[250,14629,991],{"class":912},[161,14631,14633],{"icon":5036,"title":14632},"Password Security",[20,14634,14635],{},"We're using Argon2id—the winner of the Password Hashing Competition. It's memory-hard and resistant to GPU attacks.",[72,14637],{},[31,14639,14641],{"id":14640},"step-4-create-users-database","Step 4: Create Users Database",[20,14643,14644],{},"For simplicity, we'll use a file-based approach (replace with Drizzle\u002FPrisma in production).",[20,14646,1092,14647,1007],{},[39,14648,14649],{},"server\u002Futils\u002Fdb.ts",[47,14651,14653],{"className":1010,"code":14652,"filename":14649,"language":1012,"meta":55,"style":55},"import { db } from \".\u002Fdb\";\nimport { users } from \".\u002Fschema\";\nimport { eq } from \"drizzle-orm\";\nimport { hashPassword, verifyPassword } from \".\u002Fauth\";\n\ninterface CreateUserInput {\n  email: string;\n  password: string;\n  name: string;\n}\n\nexport async function createUser(input: CreateUserInput) {\n  const hashedPassword = await hashPassword(input.password);\n  \n  await db.insert(users).values({\n    id: crypto.randomUUID(),\n    email: input.email,\n    password: hashedPassword,\n    name: input.name,\n  });\n}\n\nexport async function findUserByEmail(email: string) {\n  return db.select().from(users).where(eq(users.email, email)).get();\n}\n\nexport async function validateUserCredentials(email: string, password: string) {\n  const user = await findUserByEmail(email);\n  \n  if (!user) {\n    return null;\n  }\n  \n  const isValid = await verifyPassword(user.password, password);\n  \n  if (!isValid) {\n    return null;\n  }\n  \n  return { id: user.id, email: user.email, name: user.name };\n}\n",[39,14654,14655,14668,14681,14693,14707,14711,14720,14731,14742,14752,14756,14760,14782,14798,14802,14817,14825,14830,14835,14840,14844,14848,14852,14873,14900,14904,14908,14937,14953,14957,14968,14976,14980,14984,15000,15004,15015,15023,15027,15031,15038],{"__ignoreMap":55},[250,14656,14657,14659,14661,14663,14666],{"class":252,"line":253},[250,14658,1763],{"class":786},[250,14660,5369],{"class":912},[250,14662,1769],{"class":786},[250,14664,14665],{"class":782}," \".\u002Fdb\"",[250,14667,1379],{"class":912},[250,14669,14670,14672,14675,14677,14679],{"class":252,"line":113},[250,14671,1763],{"class":786},[250,14673,14674],{"class":912}," { users } ",[250,14676,1769],{"class":786},[250,14678,5105],{"class":782},[250,14680,1379],{"class":912},[250,14682,14683,14685,14687,14689,14691],{"class":252,"line":110},[250,14684,1763],{"class":786},[250,14686,6176],{"class":912},[250,14688,1769],{"class":786},[250,14690,4420],{"class":782},[250,14692,1379],{"class":912},[250,14694,14695,14697,14700,14702,14705],{"class":252,"line":269},[250,14696,1763],{"class":786},[250,14698,14699],{"class":912}," { hashPassword, verifyPassword } ",[250,14701,1769],{"class":786},[250,14703,14704],{"class":782}," \".\u002Fauth\"",[250,14706,1379],{"class":912},[250,14708,14709],{"class":252,"line":275},[250,14710,795],{"emptyLinePlaceholder":129},[250,14712,14713,14715,14718],{"class":252,"line":281},[250,14714,1360],{"class":786},[250,14716,14717],{"class":774}," CreateUserInput",[250,14719,1118],{"class":912},[250,14721,14722,14725,14727,14729],{"class":252,"line":287},[250,14723,14724],{"class":1370},"  email",[250,14726,1007],{"class":786},[250,14728,2506],{"class":778},[250,14730,1379],{"class":912},[250,14732,14733,14736,14738,14740],{"class":252,"line":293},[250,14734,14735],{"class":1370},"  password",[250,14737,1007],{"class":786},[250,14739,2506],{"class":778},[250,14741,1379],{"class":912},[250,14743,14744,14746,14748,14750],{"class":252,"line":299},[250,14745,2501],{"class":1370},[250,14747,1007],{"class":786},[250,14749,2506],{"class":778},[250,14751,1379],{"class":912},[250,14753,14754],{"class":252,"line":132},[250,14755,991],{"class":912},[250,14757,14758],{"class":252,"line":310},[250,14759,795],{"emptyLinePlaceholder":129},[250,14761,14762,14764,14766,14768,14771,14773,14776,14778,14780],{"class":252,"line":316},[250,14763,1019],{"class":786},[250,14765,2012],{"class":786},[250,14767,1845],{"class":786},[250,14769,14770],{"class":774}," createUser",[250,14772,1434],{"class":912},[250,14774,14775],{"class":1370},"input",[250,14777,1007],{"class":786},[250,14779,14717],{"class":774},[250,14781,1512],{"class":912},[250,14783,14784,14786,14789,14791,14793,14795],{"class":252,"line":322},[250,14785,1455],{"class":786},[250,14787,14788],{"class":778}," hashedPassword",[250,14790,1187],{"class":786},[250,14792,1463],{"class":786},[250,14794,14243],{"class":774},[250,14796,14797],{"class":912},"(input.password);\n",[250,14799,14800],{"class":252,"line":328},[250,14801,1053],{"class":912},[250,14803,14804,14806,14808,14810,14813,14815],{"class":252,"line":334},[250,14805,1565],{"class":786},[250,14807,5683],{"class":912},[250,14809,5730],{"class":774},[250,14811,14812],{"class":912},"(users).",[250,14814,5735],{"class":774},[250,14816,1028],{"class":912},[250,14818,14819,14821,14823],{"class":252,"line":340},[250,14820,1613],{"class":912},[250,14822,1616],{"class":774},[250,14824,1156],{"class":912},[250,14826,14827],{"class":252,"line":346},[250,14828,14829],{"class":912},"    email: input.email,\n",[250,14831,14832],{"class":252,"line":352},[250,14833,14834],{"class":912},"    password: hashedPassword,\n",[250,14836,14837],{"class":252,"line":358},[250,14838,14839],{"class":912},"    name: input.name,\n",[250,14841,14842],{"class":252,"line":364},[250,14843,6749],{"class":912},[250,14845,14846],{"class":252,"line":370},[250,14847,991],{"class":912},[250,14849,14850],{"class":252,"line":376},[250,14851,795],{"emptyLinePlaceholder":129},[250,14853,14854,14856,14858,14860,14863,14865,14867,14869,14871],{"class":252,"line":382},[250,14855,1019],{"class":786},[250,14857,2012],{"class":786},[250,14859,1845],{"class":786},[250,14861,14862],{"class":774}," findUserByEmail",[250,14864,1434],{"class":912},[250,14866,14410],{"class":1370},[250,14868,1007],{"class":786},[250,14870,2506],{"class":778},[250,14872,1512],{"class":912},[250,14874,14875,14877,14879,14881,14883,14885,14887,14889,14891,14893,14896,14898],{"class":252,"line":388},[250,14876,1123],{"class":786},[250,14878,5683],{"class":912},[250,14880,5870],{"class":774},[250,14882,1647],{"class":912},[250,14884,1769],{"class":774},[250,14886,14812],{"class":912},[250,14888,5879],{"class":774},[250,14890,1434],{"class":912},[250,14892,6442],{"class":774},[250,14894,14895],{"class":912},"(users.email, email)).",[250,14897,6062],{"class":774},[250,14899,1906],{"class":912},[250,14901,14902],{"class":252,"line":393},[250,14903,991],{"class":912},[250,14905,14906],{"class":252,"line":399},[250,14907,795],{"emptyLinePlaceholder":129},[250,14909,14910,14912,14914,14916,14919,14921,14923,14925,14927,14929,14931,14933,14935],{"class":252,"line":405},[250,14911,1019],{"class":786},[250,14913,2012],{"class":786},[250,14915,1845],{"class":786},[250,14917,14918],{"class":774}," validateUserCredentials",[250,14920,1434],{"class":912},[250,14922,14410],{"class":1370},[250,14924,1007],{"class":786},[250,14926,2506],{"class":778},[250,14928,7128],{"class":912},[250,14930,14248],{"class":1370},[250,14932,1007],{"class":786},[250,14934,2506],{"class":778},[250,14936,1512],{"class":912},[250,14938,14939,14941,14944,14946,14948,14950],{"class":252,"line":410},[250,14940,1455],{"class":786},[250,14942,14943],{"class":778}," user",[250,14945,1187],{"class":786},[250,14947,1463],{"class":786},[250,14949,14862],{"class":774},[250,14951,14952],{"class":912},"(email);\n",[250,14954,14955],{"class":252,"line":415},[250,14956,1053],{"class":912},[250,14958,14959,14961,14963,14965],{"class":252,"line":420},[250,14960,1486],{"class":786},[250,14962,1440],{"class":912},[250,14964,1491],{"class":786},[250,14966,14967],{"class":912},"user) {\n",[250,14969,14970,14972,14974],{"class":252,"line":426},[250,14971,14581],{"class":786},[250,14973,14546],{"class":778},[250,14975,1379],{"class":912},[250,14977,14978],{"class":252,"line":431},[250,14979,986],{"class":912},[250,14981,14982],{"class":252,"line":436},[250,14983,1053],{"class":912},[250,14985,14986,14988,14991,14993,14995,14997],{"class":252,"line":442},[250,14987,1455],{"class":786},[250,14989,14990],{"class":778}," isValid",[250,14992,1187],{"class":786},[250,14994,1463],{"class":786},[250,14996,14337],{"class":774},[250,14998,14999],{"class":912},"(user.password, password);\n",[250,15001,15002],{"class":252,"line":447},[250,15003,1053],{"class":912},[250,15005,15006,15008,15010,15012],{"class":252,"line":453},[250,15007,1486],{"class":786},[250,15009,1440],{"class":912},[250,15011,1491],{"class":786},[250,15013,15014],{"class":912},"isValid) {\n",[250,15016,15017,15019,15021],{"class":252,"line":459},[250,15018,14581],{"class":786},[250,15020,14546],{"class":778},[250,15022,1379],{"class":912},[250,15024,15025],{"class":252,"line":465},[250,15026,986],{"class":912},[250,15028,15029],{"class":252,"line":471},[250,15030,1053],{"class":912},[250,15032,15033,15035],{"class":252,"line":2201},[250,15034,1123],{"class":786},[250,15036,15037],{"class":912}," { id: user.id, email: user.email, name: user.name };\n",[250,15039,15040],{"class":252,"line":2207},[250,15041,991],{"class":912},[20,15043,15044,15045,1007],{},"Create the users schema in ",[39,15046,4389],{},[47,15048,15050],{"className":1010,"code":15049,"filename":4389,"language":1012,"meta":55,"style":55},"import { sqliteTable, text, integer } from \"drizzle-orm\u002Fsqlite-core\";\n\nexport const users = sqliteTable(\"users\", {\n  id: text(\"id\").primaryKey(),\n  email: text(\"email\").notNull().unique(),\n  password: text(\"password\").notNull(),\n  name: text(\"name\").notNull(),\n  createdAt: integer(\"created_at\", { mode: \"timestamp\" }).notNull(),\n});\n\nexport type User = typeof users.$inferSelect;\n",[39,15051,15052,15065,15069,15089,15105,15128,15146,15162,15182,15186,15190],{"__ignoreMap":55},[250,15053,15054,15056,15059,15061,15063],{"class":252,"line":253},[250,15055,1763],{"class":786},[250,15057,15058],{"class":912}," { sqliteTable, text, integer } ",[250,15060,1769],{"class":786},[250,15062,4406],{"class":782},[250,15064,1379],{"class":912},[250,15066,15067],{"class":252,"line":113},[250,15068,795],{"emptyLinePlaceholder":129},[250,15070,15071,15073,15075,15078,15080,15082,15084,15087],{"class":252,"line":110},[250,15072,1019],{"class":786},[250,15074,4438],{"class":786},[250,15076,15077],{"class":778}," users",[250,15079,1187],{"class":786},[250,15081,4446],{"class":774},[250,15083,1434],{"class":912},[250,15085,15086],{"class":782},"\"users\"",[250,15088,4454],{"class":912},[250,15090,15091,15093,15095,15097,15099,15101,15103],{"class":252,"line":269},[250,15092,4459],{"class":912},[250,15094,52],{"class":774},[250,15096,1434],{"class":912},[250,15098,4466],{"class":782},[250,15100,2380],{"class":912},[250,15102,4471],{"class":774},[250,15104,1156],{"class":912},[250,15106,15107,15110,15112,15114,15117,15119,15121,15123,15126],{"class":252,"line":275},[250,15108,15109],{"class":912},"  email: ",[250,15111,52],{"class":774},[250,15113,1434],{"class":912},[250,15115,15116],{"class":782},"\"email\"",[250,15118,2380],{"class":912},[250,15120,4490],{"class":774},[250,15122,1647],{"class":912},[250,15124,15125],{"class":774},"unique",[250,15127,1156],{"class":912},[250,15129,15130,15133,15135,15137,15140,15142,15144],{"class":252,"line":281},[250,15131,15132],{"class":912},"  password: ",[250,15134,52],{"class":774},[250,15136,1434],{"class":912},[250,15138,15139],{"class":782},"\"password\"",[250,15141,2380],{"class":912},[250,15143,4490],{"class":774},[250,15145,1156],{"class":912},[250,15147,15148,15150,15152,15154,15156,15158,15160],{"class":252,"line":287},[250,15149,4478],{"class":912},[250,15151,52],{"class":774},[250,15153,1434],{"class":912},[250,15155,4485],{"class":782},[250,15157,2380],{"class":912},[250,15159,4490],{"class":774},[250,15161,1156],{"class":912},[250,15163,15164,15166,15168,15170,15172,15174,15176,15178,15180],{"class":252,"line":293},[250,15165,4584],{"class":912},[250,15167,4556],{"class":774},[250,15169,1434],{"class":912},[250,15171,4591],{"class":782},[250,15173,4564],{"class":912},[250,15175,4596],{"class":782},[250,15177,4570],{"class":912},[250,15179,4490],{"class":774},[250,15181,1156],{"class":912},[250,15183,15184],{"class":252,"line":299},[250,15185,1077],{"class":912},[250,15187,15188],{"class":252,"line":132},[250,15189,795],{"emptyLinePlaceholder":129},[250,15191,15192,15194,15196,15199,15201,15203],{"class":252,"line":310},[250,15193,1019],{"class":786},[250,15195,4974],{"class":786},[250,15197,15198],{"class":774}," User",[250,15200,1187],{"class":786},[250,15202,4982],{"class":786},[250,15204,15205],{"class":912}," users.$inferSelect;\n",[72,15207],{},[31,15209,15211],{"id":15210},"step-5-create-authentication-api-routes","Step 5: Create Authentication API Routes",[2459,15213,15215],{"id":15214},"register","Register",[20,15217,1092,15218,1007],{},[39,15219,15220],{},"server\u002Fapi\u002Fauth\u002Fregister.post.ts",[47,15222,15224],{"className":1010,"code":15223,"filename":15220,"language":1012,"meta":55,"style":55},"import { createUser, findUserByEmail } from \"..\u002F..\u002Futils\u002Fdb\";\nimport { createToken } from \"..\u002F..\u002Futils\u002Fauth\";\n\nexport default defineEventHandler(async (event) => {\n  const body = await readBody(event);\n  \n  \u002F\u002F Validate input\n  if (!body.email || !body.password || !body.name) {\n    throw createError({\n      statusCode: 400,\n      statusMessage: \"Email, password, and name are required\",\n    });\n  }\n  \n  \u002F\u002F Check if user exists\n  const existing = await findUserByEmail(body.email);\n  \n  if (existing) {\n    throw createError({\n      statusCode: 400,\n      statusMessage: \"User already exists\",\n    });\n  }\n  \n  \u002F\u002F Create user\n  await createUser({\n    email: body.email,\n    password: body.password,\n    name: body.name,\n  });\n  \n  \u002F\u002F Generate token\n  const token = await createToken(body.email, body.email);\n  \n  setCookie(event, \"auth_token\", token, {\n    httpOnly: true,\n    secure: process.env.NODE_ENV === \"production\",\n    sameSite: \"lax\",\n    maxAge: 60 * 60 * 24 * 7, \u002F\u002F 7 days\n  });\n  \n  return { success: true, email: body.email };\n});\n",[39,15225,15226,15240,15254,15258,15280,15294,15298,15302,15327,15335,15343,15352,15356,15360,15364,15369,15385,15389,15396,15404,15412,15421,15425,15429,15433,15438,15446,15451,15456,15461,15465,15469,15474,15490,15494,15507,15516,15531,15541,15569,15573,15577,15589],{"__ignoreMap":55},[250,15227,15228,15230,15233,15235,15238],{"class":252,"line":253},[250,15229,1763],{"class":786},[250,15231,15232],{"class":912}," { createUser, findUserByEmail } ",[250,15234,1769],{"class":786},[250,15236,15237],{"class":782}," \"..\u002F..\u002Futils\u002Fdb\"",[250,15239,1379],{"class":912},[250,15241,15242,15244,15247,15249,15252],{"class":252,"line":113},[250,15243,1763],{"class":786},[250,15245,15246],{"class":912}," { createToken } ",[250,15248,1769],{"class":786},[250,15250,15251],{"class":782}," \"..\u002F..\u002Futils\u002Fauth\"",[250,15253,1379],{"class":912},[250,15255,15256],{"class":252,"line":110},[250,15257,795],{"emptyLinePlaceholder":129},[250,15259,15260,15262,15264,15266,15268,15270,15272,15274,15276,15278],{"class":252,"line":269},[250,15261,1019],{"class":786},[250,15263,1022],{"class":786},[250,15265,1109],{"class":774},[250,15267,1434],{"class":912},[250,15269,1437],{"class":786},[250,15271,1440],{"class":912},[250,15273,1443],{"class":1370},[250,15275,1446],{"class":912},[250,15277,1115],{"class":786},[250,15279,1118],{"class":912},[250,15281,15282,15284,15286,15288,15290,15292],{"class":252,"line":275},[250,15283,1455],{"class":786},[250,15285,1458],{"class":778},[250,15287,1187],{"class":786},[250,15289,1463],{"class":786},[250,15291,1466],{"class":774},[250,15293,6261],{"class":912},[250,15295,15296],{"class":252,"line":281},[250,15297,1053],{"class":912},[250,15299,15300],{"class":252,"line":287},[250,15301,6270],{"class":768},[250,15303,15304,15306,15308,15310,15313,15315,15317,15320,15322,15324],{"class":252,"line":293},[250,15305,1486],{"class":786},[250,15307,1440],{"class":912},[250,15309,1491],{"class":786},[250,15311,15312],{"class":912},"body.email ",[250,15314,1497],{"class":786},[250,15316,6286],{"class":786},[250,15318,15319],{"class":912},"body.password ",[250,15321,1497],{"class":786},[250,15323,6286],{"class":786},[250,15325,15326],{"class":912},"body.name) {\n",[250,15328,15329,15331,15333],{"class":252,"line":299},[250,15330,1517],{"class":786},[250,15332,1520],{"class":774},[250,15334,1028],{"class":912},[250,15336,15337,15339,15341],{"class":252,"line":132},[250,15338,1527],{"class":912},[250,15340,1530],{"class":778},[250,15342,927],{"class":912},[250,15344,15345,15347,15350],{"class":252,"line":310},[250,15346,1537],{"class":912},[250,15348,15349],{"class":782},"\"Email, password, and name are required\"",[250,15351,927],{"class":912},[250,15353,15354],{"class":252,"line":316},[250,15355,1547],{"class":912},[250,15357,15358],{"class":252,"line":322},[250,15359,986],{"class":912},[250,15361,15362],{"class":252,"line":328},[250,15363,1053],{"class":912},[250,15365,15366],{"class":252,"line":334},[250,15367,15368],{"class":768},"  \u002F\u002F Check if user exists\n",[250,15370,15371,15373,15376,15378,15380,15382],{"class":252,"line":340},[250,15372,1455],{"class":786},[250,15374,15375],{"class":778}," existing",[250,15377,1187],{"class":786},[250,15379,1463],{"class":786},[250,15381,14862],{"class":774},[250,15383,15384],{"class":912},"(body.email);\n",[250,15386,15387],{"class":252,"line":346},[250,15388,1053],{"class":912},[250,15390,15391,15393],{"class":252,"line":352},[250,15392,1486],{"class":786},[250,15394,15395],{"class":912}," (existing) {\n",[250,15397,15398,15400,15402],{"class":252,"line":358},[250,15399,1517],{"class":786},[250,15401,1520],{"class":774},[250,15403,1028],{"class":912},[250,15405,15406,15408,15410],{"class":252,"line":364},[250,15407,1527],{"class":912},[250,15409,1530],{"class":778},[250,15411,927],{"class":912},[250,15413,15414,15416,15419],{"class":252,"line":370},[250,15415,1537],{"class":912},[250,15417,15418],{"class":782},"\"User already exists\"",[250,15420,927],{"class":912},[250,15422,15423],{"class":252,"line":376},[250,15424,1547],{"class":912},[250,15426,15427],{"class":252,"line":382},[250,15428,986],{"class":912},[250,15430,15431],{"class":252,"line":388},[250,15432,1053],{"class":912},[250,15434,15435],{"class":252,"line":393},[250,15436,15437],{"class":768},"  \u002F\u002F Create user\n",[250,15439,15440,15442,15444],{"class":252,"line":399},[250,15441,1565],{"class":786},[250,15443,14770],{"class":774},[250,15445,1028],{"class":912},[250,15447,15448],{"class":252,"line":405},[250,15449,15450],{"class":912},"    email: body.email,\n",[250,15452,15453],{"class":252,"line":410},[250,15454,15455],{"class":912},"    password: body.password,\n",[250,15457,15458],{"class":252,"line":415},[250,15459,15460],{"class":912},"    name: body.name,\n",[250,15462,15463],{"class":252,"line":420},[250,15464,6749],{"class":912},[250,15466,15467],{"class":252,"line":426},[250,15468,1053],{"class":912},[250,15470,15471],{"class":252,"line":431},[250,15472,15473],{"class":768},"  \u002F\u002F Generate token\n",[250,15475,15476,15478,15481,15483,15485,15487],{"class":252,"line":436},[250,15477,1455],{"class":786},[250,15479,15480],{"class":778}," token",[250,15482,1187],{"class":786},[250,15484,1463],{"class":786},[250,15486,14396],{"class":774},[250,15488,15489],{"class":912},"(body.email, body.email);\n",[250,15491,15492],{"class":252,"line":442},[250,15493,1053],{"class":912},[250,15495,15496,15499,15501,15504],{"class":252,"line":447},[250,15497,15498],{"class":774},"  setCookie",[250,15500,5972],{"class":912},[250,15502,15503],{"class":782},"\"auth_token\"",[250,15505,15506],{"class":912},", token, {\n",[250,15508,15509,15512,15514],{"class":252,"line":453},[250,15510,15511],{"class":912},"    httpOnly: ",[250,15513,1066],{"class":778},[250,15515,927],{"class":912},[250,15517,15518,15521,15524,15526,15529],{"class":252,"line":459},[250,15519,15520],{"class":912},"    secure: process.env.",[250,15522,15523],{"class":778},"NODE_ENV",[250,15525,1506],{"class":786},[250,15527,15528],{"class":782}," \"production\"",[250,15530,927],{"class":912},[250,15532,15533,15536,15539],{"class":252,"line":465},[250,15534,15535],{"class":912},"    sameSite: ",[250,15537,15538],{"class":782},"\"lax\"",[250,15540,927],{"class":912},[250,15542,15543,15546,15549,15551,15554,15556,15559,15561,15564,15566],{"class":252,"line":471},[250,15544,15545],{"class":912},"    maxAge: ",[250,15547,15548],{"class":778},"60",[250,15550,5094],{"class":786},[250,15552,15553],{"class":778}," 60",[250,15555,5094],{"class":786},[250,15557,15558],{"class":778}," 24",[250,15560,5094],{"class":786},[250,15562,15563],{"class":778}," 7",[250,15565,7128],{"class":912},[250,15567,15568],{"class":768},"\u002F\u002F 7 days\n",[250,15570,15571],{"class":252,"line":2201},[250,15572,6749],{"class":912},[250,15574,15575],{"class":252,"line":2207},[250,15576,1053],{"class":912},[250,15578,15579,15581,15584,15586],{"class":252,"line":2213},[250,15580,1123],{"class":786},[250,15582,15583],{"class":912}," { success: ",[250,15585,1066],{"class":778},[250,15587,15588],{"class":912},", email: body.email };\n",[250,15590,15591],{"class":252,"line":2218},[250,15592,1077],{"class":912},[2459,15594,15596],{"id":15595},"login","Login",[20,15598,1092,15599,1007],{},[39,15600,15601],{},"server\u002Fapi\u002Fauth\u002Flogin.post.ts",[47,15603,15605],{"className":1010,"code":15604,"filename":15601,"language":1012,"meta":55,"style":55},"import { validateUserCredentials } from \"..\u002F..\u002Futils\u002Fdb\";\nimport { createToken } from \"..\u002F..\u002Futils\u002Fauth\";\n\nexport default defineEventHandler(async (event) => {\n  const body = await readBody(event);\n  \n  if (!body.email || !body.password) {\n    throw createError({\n      statusCode: 400,\n      statusMessage: \"Email and password are required\",\n    });\n  }\n  \n  const user = await validateUserCredentials(body.email, body.password);\n  \n  if (!user) {\n    throw createError({\n      statusCode: 401,\n      statusMessage: \"Invalid credentials\",\n    });\n  }\n  \n  const token = await createToken(user.id, user.email);\n  \n  setCookie(event, \"auth_token\", token, {\n    httpOnly: true,\n    secure: process.env.NODE_ENV === \"production\",\n    sameSite: \"lax\",\n    maxAge: 60 * 60 * 24 * 7, \u002F\u002F 7 days\n  });\n  \n  return { success: true, user: { email: user.email, name: user.name } };\n});\n",[39,15606,15607,15620,15632,15636,15658,15672,15676,15693,15701,15709,15718,15722,15726,15730,15745,15749,15759,15767,15775,15784,15788,15792,15796,15811,15815,15825,15833,15845,15853,15875,15879,15883,15894],{"__ignoreMap":55},[250,15608,15609,15611,15614,15616,15618],{"class":252,"line":253},[250,15610,1763],{"class":786},[250,15612,15613],{"class":912}," { validateUserCredentials } ",[250,15615,1769],{"class":786},[250,15617,15237],{"class":782},[250,15619,1379],{"class":912},[250,15621,15622,15624,15626,15628,15630],{"class":252,"line":113},[250,15623,1763],{"class":786},[250,15625,15246],{"class":912},[250,15627,1769],{"class":786},[250,15629,15251],{"class":782},[250,15631,1379],{"class":912},[250,15633,15634],{"class":252,"line":110},[250,15635,795],{"emptyLinePlaceholder":129},[250,15637,15638,15640,15642,15644,15646,15648,15650,15652,15654,15656],{"class":252,"line":269},[250,15639,1019],{"class":786},[250,15641,1022],{"class":786},[250,15643,1109],{"class":774},[250,15645,1434],{"class":912},[250,15647,1437],{"class":786},[250,15649,1440],{"class":912},[250,15651,1443],{"class":1370},[250,15653,1446],{"class":912},[250,15655,1115],{"class":786},[250,15657,1118],{"class":912},[250,15659,15660,15662,15664,15666,15668,15670],{"class":252,"line":275},[250,15661,1455],{"class":786},[250,15663,1458],{"class":778},[250,15665,1187],{"class":786},[250,15667,1463],{"class":786},[250,15669,1466],{"class":774},[250,15671,6261],{"class":912},[250,15673,15674],{"class":252,"line":281},[250,15675,1053],{"class":912},[250,15677,15678,15680,15682,15684,15686,15688,15690],{"class":252,"line":287},[250,15679,1486],{"class":786},[250,15681,1440],{"class":912},[250,15683,1491],{"class":786},[250,15685,15312],{"class":912},[250,15687,1497],{"class":786},[250,15689,6286],{"class":786},[250,15691,15692],{"class":912},"body.password) {\n",[250,15694,15695,15697,15699],{"class":252,"line":293},[250,15696,1517],{"class":786},[250,15698,1520],{"class":774},[250,15700,1028],{"class":912},[250,15702,15703,15705,15707],{"class":252,"line":299},[250,15704,1527],{"class":912},[250,15706,1530],{"class":778},[250,15708,927],{"class":912},[250,15710,15711,15713,15716],{"class":252,"line":132},[250,15712,1537],{"class":912},[250,15714,15715],{"class":782},"\"Email and password are required\"",[250,15717,927],{"class":912},[250,15719,15720],{"class":252,"line":310},[250,15721,1547],{"class":912},[250,15723,15724],{"class":252,"line":316},[250,15725,986],{"class":912},[250,15727,15728],{"class":252,"line":322},[250,15729,1053],{"class":912},[250,15731,15732,15734,15736,15738,15740,15742],{"class":252,"line":328},[250,15733,1455],{"class":786},[250,15735,14943],{"class":778},[250,15737,1187],{"class":786},[250,15739,1463],{"class":786},[250,15741,14918],{"class":774},[250,15743,15744],{"class":912},"(body.email, body.password);\n",[250,15746,15747],{"class":252,"line":334},[250,15748,1053],{"class":912},[250,15750,15751,15753,15755,15757],{"class":252,"line":340},[250,15752,1486],{"class":786},[250,15754,1440],{"class":912},[250,15756,1491],{"class":786},[250,15758,14967],{"class":912},[250,15760,15761,15763,15765],{"class":252,"line":346},[250,15762,1517],{"class":786},[250,15764,1520],{"class":774},[250,15766,1028],{"class":912},[250,15768,15769,15771,15773],{"class":252,"line":352},[250,15770,1527],{"class":912},[250,15772,10538],{"class":778},[250,15774,927],{"class":912},[250,15776,15777,15779,15782],{"class":252,"line":358},[250,15778,1537],{"class":912},[250,15780,15781],{"class":782},"\"Invalid credentials\"",[250,15783,927],{"class":912},[250,15785,15786],{"class":252,"line":364},[250,15787,1547],{"class":912},[250,15789,15790],{"class":252,"line":370},[250,15791,986],{"class":912},[250,15793,15794],{"class":252,"line":376},[250,15795,1053],{"class":912},[250,15797,15798,15800,15802,15804,15806,15808],{"class":252,"line":382},[250,15799,1455],{"class":786},[250,15801,15480],{"class":778},[250,15803,1187],{"class":786},[250,15805,1463],{"class":786},[250,15807,14396],{"class":774},[250,15809,15810],{"class":912},"(user.id, user.email);\n",[250,15812,15813],{"class":252,"line":388},[250,15814,1053],{"class":912},[250,15816,15817,15819,15821,15823],{"class":252,"line":393},[250,15818,15498],{"class":774},[250,15820,5972],{"class":912},[250,15822,15503],{"class":782},[250,15824,15506],{"class":912},[250,15826,15827,15829,15831],{"class":252,"line":399},[250,15828,15511],{"class":912},[250,15830,1066],{"class":778},[250,15832,927],{"class":912},[250,15834,15835,15837,15839,15841,15843],{"class":252,"line":405},[250,15836,15520],{"class":912},[250,15838,15523],{"class":778},[250,15840,1506],{"class":786},[250,15842,15528],{"class":782},[250,15844,927],{"class":912},[250,15846,15847,15849,15851],{"class":252,"line":410},[250,15848,15535],{"class":912},[250,15850,15538],{"class":782},[250,15852,927],{"class":912},[250,15854,15855,15857,15859,15861,15863,15865,15867,15869,15871,15873],{"class":252,"line":415},[250,15856,15545],{"class":912},[250,15858,15548],{"class":778},[250,15860,5094],{"class":786},[250,15862,15553],{"class":778},[250,15864,5094],{"class":786},[250,15866,15558],{"class":778},[250,15868,5094],{"class":786},[250,15870,15563],{"class":778},[250,15872,7128],{"class":912},[250,15874,15568],{"class":768},[250,15876,15877],{"class":252,"line":420},[250,15878,6749],{"class":912},[250,15880,15881],{"class":252,"line":426},[250,15882,1053],{"class":912},[250,15884,15885,15887,15889,15891],{"class":252,"line":431},[250,15886,1123],{"class":786},[250,15888,15583],{"class":912},[250,15890,1066],{"class":778},[250,15892,15893],{"class":912},", user: { email: user.email, name: user.name } };\n",[250,15895,15896],{"class":252,"line":436},[250,15897,1077],{"class":912},[2459,15899,15901],{"id":15900},"logout","Logout",[20,15903,1092,15904,1007],{},[39,15905,15906],{},"server\u002Fapi\u002Fauth\u002Flogout.post.ts",[47,15908,15910],{"className":1010,"code":15909,"filename":15906,"language":1012,"meta":55,"style":55},"export default defineEventHandler(async (event) => {\n  deleteCookie(event, \"auth_token\");\n  return { success: true };\n});\n",[39,15911,15912,15934,15945,15955],{"__ignoreMap":55},[250,15913,15914,15916,15918,15920,15922,15924,15926,15928,15930,15932],{"class":252,"line":253},[250,15915,1019],{"class":786},[250,15917,1022],{"class":786},[250,15919,1109],{"class":774},[250,15921,1434],{"class":912},[250,15923,1437],{"class":786},[250,15925,1440],{"class":912},[250,15927,1443],{"class":1370},[250,15929,1446],{"class":912},[250,15931,1115],{"class":786},[250,15933,1118],{"class":912},[250,15935,15936,15939,15941,15943],{"class":252,"line":113},[250,15937,15938],{"class":774},"  deleteCookie",[250,15940,5972],{"class":912},[250,15942,15503],{"class":782},[250,15944,1885],{"class":912},[250,15946,15947,15949,15951,15953],{"class":252,"line":110},[250,15948,1123],{"class":786},[250,15950,15583],{"class":912},[250,15952,1066],{"class":778},[250,15954,5784],{"class":912},[250,15956,15957],{"class":252,"line":269},[250,15958,1077],{"class":912},[2459,15960,15962],{"id":15961},"get-current-user","Get Current User",[20,15964,1092,15965,1007],{},[39,15966,15967],{},"server\u002Fapi\u002Fauth\u002Fme.get.ts",[47,15969,15971],{"className":1010,"code":15970,"filename":15967,"language":1012,"meta":55,"style":55},"import { verifyToken } from \"..\u002F..\u002Futils\u002Fauth\";\nimport { findUserByEmail } from \"..\u002F..\u002Futils\u002Fdb\";\n\nexport default defineEventHandler(async (event) => {\n  const token = getCookie(event, \"auth_token\");\n  \n  if (!token) {\n    throw createError({\n      statusCode: 401,\n      statusMessage: \"Not authenticated\",\n    });\n  }\n  \n  const payload = await verifyToken(token);\n  \n  if (!payload) {\n    throw createError({\n      statusCode: 401,\n      statusMessage: \"Invalid token\",\n    });\n  }\n  \n  const user = await findUserByEmail(payload.email);\n  \n  if (!user) {\n    throw createError({\n      statusCode: 401,\n      statusMessage: \"User not found\",\n    });\n  }\n  \n  return {\n    id: user.id,\n    email: user.email,\n    name: user.name,\n  };\n});\n",[39,15972,15973,15986,15999,16003,16025,16042,16046,16057,16065,16073,16082,16086,16090,16094,16110,16114,16125,16133,16141,16150,16154,16158,16162,16177,16181,16191,16199,16207,16216,16220,16224,16228,16234,16239,16244,16249,16253],{"__ignoreMap":55},[250,15974,15975,15977,15980,15982,15984],{"class":252,"line":253},[250,15976,1763],{"class":786},[250,15978,15979],{"class":912}," { verifyToken } ",[250,15981,1769],{"class":786},[250,15983,15251],{"class":782},[250,15985,1379],{"class":912},[250,15987,15988,15990,15993,15995,15997],{"class":252,"line":113},[250,15989,1763],{"class":786},[250,15991,15992],{"class":912}," { findUserByEmail } ",[250,15994,1769],{"class":786},[250,15996,15237],{"class":782},[250,15998,1379],{"class":912},[250,16000,16001],{"class":252,"line":110},[250,16002,795],{"emptyLinePlaceholder":129},[250,16004,16005,16007,16009,16011,16013,16015,16017,16019,16021,16023],{"class":252,"line":269},[250,16006,1019],{"class":786},[250,16008,1022],{"class":786},[250,16010,1109],{"class":774},[250,16012,1434],{"class":912},[250,16014,1437],{"class":786},[250,16016,1440],{"class":912},[250,16018,1443],{"class":1370},[250,16020,1446],{"class":912},[250,16022,1115],{"class":786},[250,16024,1118],{"class":912},[250,16026,16027,16029,16031,16033,16036,16038,16040],{"class":252,"line":275},[250,16028,1455],{"class":786},[250,16030,15480],{"class":778},[250,16032,1187],{"class":786},[250,16034,16035],{"class":774}," getCookie",[250,16037,5972],{"class":912},[250,16039,15503],{"class":782},[250,16041,1885],{"class":912},[250,16043,16044],{"class":252,"line":281},[250,16045,1053],{"class":912},[250,16047,16048,16050,16052,16054],{"class":252,"line":287},[250,16049,1486],{"class":786},[250,16051,1440],{"class":912},[250,16053,1491],{"class":786},[250,16055,16056],{"class":912},"token) {\n",[250,16058,16059,16061,16063],{"class":252,"line":293},[250,16060,1517],{"class":786},[250,16062,1520],{"class":774},[250,16064,1028],{"class":912},[250,16066,16067,16069,16071],{"class":252,"line":299},[250,16068,1527],{"class":912},[250,16070,10538],{"class":778},[250,16072,927],{"class":912},[250,16074,16075,16077,16080],{"class":252,"line":132},[250,16076,1537],{"class":912},[250,16078,16079],{"class":782},"\"Not authenticated\"",[250,16081,927],{"class":912},[250,16083,16084],{"class":252,"line":310},[250,16085,1547],{"class":912},[250,16087,16088],{"class":252,"line":316},[250,16089,986],{"class":912},[250,16091,16092],{"class":252,"line":322},[250,16093,1053],{"class":912},[250,16095,16096,16098,16101,16103,16105,16107],{"class":252,"line":328},[250,16097,1455],{"class":786},[250,16099,16100],{"class":778}," payload",[250,16102,1187],{"class":786},[250,16104,1463],{"class":786},[250,16106,14505],{"class":774},[250,16108,16109],{"class":912},"(token);\n",[250,16111,16112],{"class":252,"line":334},[250,16113,1053],{"class":912},[250,16115,16116,16118,16120,16122],{"class":252,"line":340},[250,16117,1486],{"class":786},[250,16119,1440],{"class":912},[250,16121,1491],{"class":786},[250,16123,16124],{"class":912},"payload) {\n",[250,16126,16127,16129,16131],{"class":252,"line":346},[250,16128,1517],{"class":786},[250,16130,1520],{"class":774},[250,16132,1028],{"class":912},[250,16134,16135,16137,16139],{"class":252,"line":352},[250,16136,1527],{"class":912},[250,16138,10538],{"class":778},[250,16140,927],{"class":912},[250,16142,16143,16145,16148],{"class":252,"line":358},[250,16144,1537],{"class":912},[250,16146,16147],{"class":782},"\"Invalid token\"",[250,16149,927],{"class":912},[250,16151,16152],{"class":252,"line":364},[250,16153,1547],{"class":912},[250,16155,16156],{"class":252,"line":370},[250,16157,986],{"class":912},[250,16159,16160],{"class":252,"line":376},[250,16161,1053],{"class":912},[250,16163,16164,16166,16168,16170,16172,16174],{"class":252,"line":382},[250,16165,1455],{"class":786},[250,16167,14943],{"class":778},[250,16169,1187],{"class":786},[250,16171,1463],{"class":786},[250,16173,14862],{"class":774},[250,16175,16176],{"class":912},"(payload.email);\n",[250,16178,16179],{"class":252,"line":388},[250,16180,1053],{"class":912},[250,16182,16183,16185,16187,16189],{"class":252,"line":393},[250,16184,1486],{"class":786},[250,16186,1440],{"class":912},[250,16188,1491],{"class":786},[250,16190,14967],{"class":912},[250,16192,16193,16195,16197],{"class":252,"line":399},[250,16194,1517],{"class":786},[250,16196,1520],{"class":774},[250,16198,1028],{"class":912},[250,16200,16201,16203,16205],{"class":252,"line":405},[250,16202,1527],{"class":912},[250,16204,10538],{"class":778},[250,16206,927],{"class":912},[250,16208,16209,16211,16214],{"class":252,"line":410},[250,16210,1537],{"class":912},[250,16212,16213],{"class":782},"\"User not found\"",[250,16215,927],{"class":912},[250,16217,16218],{"class":252,"line":415},[250,16219,1547],{"class":912},[250,16221,16222],{"class":252,"line":420},[250,16223,986],{"class":912},[250,16225,16226],{"class":252,"line":426},[250,16227,1053],{"class":912},[250,16229,16230,16232],{"class":252,"line":431},[250,16231,1123],{"class":786},[250,16233,1118],{"class":912},[250,16235,16236],{"class":252,"line":436},[250,16237,16238],{"class":912},"    id: user.id,\n",[250,16240,16241],{"class":252,"line":442},[250,16242,16243],{"class":912},"    email: user.email,\n",[250,16245,16246],{"class":252,"line":447},[250,16247,16248],{"class":912},"    name: user.name,\n",[250,16250,16251],{"class":252,"line":453},[250,16252,1161],{"class":912},[250,16254,16255],{"class":252,"line":459},[250,16256,1077],{"class":912},[72,16258],{},[31,16260,16262],{"id":16261},"step-6-protect-api-routes","Step 6: Protect API Routes",[20,16264,16265],{},"Now let's protect our order management endpoints so only authenticated users can access them.",[20,16267,1003,16268,1007],{},[39,16269,7575],{},[47,16271,16273],{"className":1010,"code":16272,"filename":7575,"language":1012,"meta":55,"style":55},"import { db } from \"..\u002Fdb\";\nimport { orders, orderItems } from \"..\u002Fdb\u002Fschema\";\nimport { verifyToken } from \"..\u002Futils\u002Fauth\";\n\nexport default defineEventHandler(async (event) => {\n  \u002F\u002F Authentication check\n  const token = getCookie(event, \"auth_token\");\n  \n  if (!token) {\n    throw createError({\n      statusCode: 401,\n      statusMessage: \"Authentication required\",\n    });\n  }\n  \n  const payload = await verifyToken(token);\n  \n  if (!payload) {\n    throw createError({\n      statusCode: 401,\n      statusMessage: \"Invalid token\",\n    });\n  }\n  \n  const allOrders = await db\n    .select()\n    .from(orders)\n    .orderBy(orders.createdAt);\n  \n  const ordersWithItems = await Promise.all(\n    allOrders.map(async (order) => {\n      const items = await db\n        .select()\n        .from(orderItems)\n        .where(orderItems.orderId.equals(order.id));\n      return { ...order, items };\n    })\n  );\n  \n  return { orders: ordersWithItems };\n});\n",[39,16274,16275,16287,16299,16312,16316,16338,16343,16359,16363,16373,16381,16389,16398,16402,16406,16410,16424,16428,16438,16446,16454,16462,16466,16470,16474,16486,16494,16502,16510,16514,16532,16552,16564,16572,16580,16592,16602,16606,16610,16614,16620],{"__ignoreMap":55},[250,16276,16277,16279,16281,16283,16285],{"class":252,"line":253},[250,16278,1763],{"class":786},[250,16280,5369],{"class":912},[250,16282,1769],{"class":786},[250,16284,5374],{"class":782},[250,16286,1379],{"class":912},[250,16288,16289,16291,16293,16295,16297],{"class":252,"line":113},[250,16290,1763],{"class":786},[250,16292,7599],{"class":912},[250,16294,1769],{"class":786},[250,16296,5388],{"class":782},[250,16298,1379],{"class":912},[250,16300,16301,16303,16305,16307,16310],{"class":252,"line":110},[250,16302,1763],{"class":786},[250,16304,15979],{"class":912},[250,16306,1769],{"class":786},[250,16308,16309],{"class":782}," \"..\u002Futils\u002Fauth\"",[250,16311,1379],{"class":912},[250,16313,16314],{"class":252,"line":269},[250,16315,795],{"emptyLinePlaceholder":129},[250,16317,16318,16320,16322,16324,16326,16328,16330,16332,16334,16336],{"class":252,"line":275},[250,16319,1019],{"class":786},[250,16321,1022],{"class":786},[250,16323,1109],{"class":774},[250,16325,1434],{"class":912},[250,16327,1437],{"class":786},[250,16329,1440],{"class":912},[250,16331,1443],{"class":1370},[250,16333,1446],{"class":912},[250,16335,1115],{"class":786},[250,16337,1118],{"class":912},[250,16339,16340],{"class":252,"line":281},[250,16341,16342],{"class":768},"  \u002F\u002F Authentication check\n",[250,16344,16345,16347,16349,16351,16353,16355,16357],{"class":252,"line":287},[250,16346,1455],{"class":786},[250,16348,15480],{"class":778},[250,16350,1187],{"class":786},[250,16352,16035],{"class":774},[250,16354,5972],{"class":912},[250,16356,15503],{"class":782},[250,16358,1885],{"class":912},[250,16360,16361],{"class":252,"line":293},[250,16362,1053],{"class":912},[250,16364,16365,16367,16369,16371],{"class":252,"line":299},[250,16366,1486],{"class":786},[250,16368,1440],{"class":912},[250,16370,1491],{"class":786},[250,16372,16056],{"class":912},[250,16374,16375,16377,16379],{"class":252,"line":132},[250,16376,1517],{"class":786},[250,16378,1520],{"class":774},[250,16380,1028],{"class":912},[250,16382,16383,16385,16387],{"class":252,"line":310},[250,16384,1527],{"class":912},[250,16386,10538],{"class":778},[250,16388,927],{"class":912},[250,16390,16391,16393,16396],{"class":252,"line":316},[250,16392,1537],{"class":912},[250,16394,16395],{"class":782},"\"Authentication required\"",[250,16397,927],{"class":912},[250,16399,16400],{"class":252,"line":322},[250,16401,1547],{"class":912},[250,16403,16404],{"class":252,"line":328},[250,16405,986],{"class":912},[250,16407,16408],{"class":252,"line":334},[250,16409,1053],{"class":912},[250,16411,16412,16414,16416,16418,16420,16422],{"class":252,"line":340},[250,16413,1455],{"class":786},[250,16415,16100],{"class":778},[250,16417,1187],{"class":786},[250,16419,1463],{"class":786},[250,16421,14505],{"class":774},[250,16423,16109],{"class":912},[250,16425,16426],{"class":252,"line":346},[250,16427,1053],{"class":912},[250,16429,16430,16432,16434,16436],{"class":252,"line":352},[250,16431,1486],{"class":786},[250,16433,1440],{"class":912},[250,16435,1491],{"class":786},[250,16437,16124],{"class":912},[250,16439,16440,16442,16444],{"class":252,"line":358},[250,16441,1517],{"class":786},[250,16443,1520],{"class":774},[250,16445,1028],{"class":912},[250,16447,16448,16450,16452],{"class":252,"line":364},[250,16449,1527],{"class":912},[250,16451,10538],{"class":778},[250,16453,927],{"class":912},[250,16455,16456,16458,16460],{"class":252,"line":370},[250,16457,1537],{"class":912},[250,16459,16147],{"class":782},[250,16461,927],{"class":912},[250,16463,16464],{"class":252,"line":376},[250,16465,1547],{"class":912},[250,16467,16468],{"class":252,"line":382},[250,16469,986],{"class":912},[250,16471,16472],{"class":252,"line":388},[250,16473,1053],{"class":912},[250,16475,16476,16478,16480,16482,16484],{"class":252,"line":393},[250,16477,1455],{"class":786},[250,16479,7634],{"class":778},[250,16481,1187],{"class":786},[250,16483,1463],{"class":786},[250,16485,6413],{"class":912},[250,16487,16488,16490,16492],{"class":252,"line":399},[250,16489,4604],{"class":912},[250,16491,5870],{"class":774},[250,16493,4861],{"class":912},[250,16495,16496,16498,16500],{"class":252,"line":405},[250,16497,4604],{"class":912},[250,16499,1769],{"class":774},[250,16501,6945],{"class":912},[250,16503,16504,16506,16508],{"class":252,"line":410},[250,16505,4604],{"class":912},[250,16507,7663],{"class":774},[250,16509,7666],{"class":912},[250,16511,16512],{"class":252,"line":415},[250,16513,1053],{"class":912},[250,16515,16516,16518,16520,16522,16524,16526,16528,16530],{"class":252,"line":420},[250,16517,1455],{"class":786},[250,16519,7682],{"class":778},[250,16521,1187],{"class":786},[250,16523,1463],{"class":786},[250,16525,1571],{"class":778},[250,16527,2230],{"class":912},[250,16529,2233],{"class":774},[250,16531,1982],{"class":912},[250,16533,16534,16536,16538,16540,16542,16544,16546,16548,16550],{"class":252,"line":426},[250,16535,7699],{"class":912},[250,16537,2820],{"class":774},[250,16539,1434],{"class":912},[250,16541,1437],{"class":786},[250,16543,1440],{"class":912},[250,16545,7710],{"class":1370},[250,16547,1446],{"class":912},[250,16549,1115],{"class":786},[250,16551,1118],{"class":912},[250,16553,16554,16556,16558,16560,16562],{"class":252,"line":431},[250,16555,7721],{"class":786},[250,16557,5861],{"class":778},[250,16559,1187],{"class":786},[250,16561,1463],{"class":786},[250,16563,6413],{"class":912},[250,16565,16566,16568,16570],{"class":252,"line":436},[250,16567,7734],{"class":912},[250,16569,5870],{"class":774},[250,16571,4861],{"class":912},[250,16573,16574,16576,16578],{"class":252,"line":442},[250,16575,7734],{"class":912},[250,16577,1769],{"class":774},[250,16579,7005],{"class":912},[250,16581,16582,16584,16586,16588,16590],{"class":252,"line":447},[250,16583,7734],{"class":912},[250,16585,5879],{"class":774},[250,16587,7755],{"class":912},[250,16589,6056],{"class":774},[250,16591,7760],{"class":912},[250,16593,16594,16596,16598,16600],{"class":252,"line":453},[250,16595,7765],{"class":786},[250,16597,7768],{"class":912},[250,16599,7771],{"class":786},[250,16601,7774],{"class":912},[250,16603,16604],{"class":252,"line":459},[250,16605,7485],{"class":912},[250,16607,16608],{"class":252,"line":465},[250,16609,2859],{"class":912},[250,16611,16612],{"class":252,"line":471},[250,16613,1053],{"class":912},[250,16615,16616,16618],{"class":252,"line":2201},[250,16617,1123],{"class":786},[250,16619,7793],{"class":912},[250,16621,16622],{"class":252,"line":2207},[250,16623,1077],{"class":912},[161,16625,16627],{"icon":7846,"title":16626},"Middleware Pattern",[20,16628,16629],{},"You can extract this auth check into a reusable middleware function to protect multiple routes without repetition.",[72,16631],{},[31,16633,16635],{"id":16634},"step-7-add-oauth-with-github","Step 7: Add OAuth with GitHub",[20,16637,16638],{},"Let's add social login using GitHub as an example.",[20,16640,16641,16642],{},"First, create a GitHub OAuth app at ",[203,16643,16644],{"href":16644,"rel":16645},"https:\u002F\u002Fgithub.com\u002Fsettings\u002Fdevelopers",[207],[20,16647,16648,16649,1007],{},"Add credentials to your ",[39,16650,14116],{},[47,16652,16654],{"className":758,"code":16653,"filename":14116,"language":761,"meta":55,"style":55},"GITHUB_CLIENT_ID=your_client_id\nGITHUB_CLIENT_SECRET=your_client_secret\n",[39,16655,16656,16666],{"__ignoreMap":55},[250,16657,16658,16661,16663],{"class":252,"line":253},[250,16659,16660],{"class":912},"GITHUB_CLIENT_ID",[250,16662,1416],{"class":786},[250,16664,16665],{"class":782},"your_client_id\n",[250,16667,16668,16671,16673],{"class":252,"line":113},[250,16669,16670],{"class":912},"GITHUB_CLIENT_SECRET",[250,16672,1416],{"class":786},[250,16674,16675],{"class":782},"your_client_secret\n",[20,16677,1003,16678,1007],{},[39,16679,1006],{},[47,16681,16683],{"className":1010,"code":16682,"filename":1006,"language":1012,"meta":55,"style":55},"export default defineNuxtConfig({\n  auth: {\n    provider: {\n      type: \"authjs\",\n      provider: \"github\",\n    },\n    globalAppMiddleware: true,\n  },\n  \n  runtimeConfig: {\n    authSecret: process.env.AUTH_SECRET,\n    github: {\n      clientId: process.env.GITHUB_CLIENT_ID,\n      clientSecret: process.env.GITHUB_CLIENT_SECRET,\n    },\n    public: {\n      authOrigin: process.env.AUTH_ORIGIN || \"http:\u002F\u002Flocalhost:3000\",\n    },\n  },\n});\n",[39,16684,16685,16695,16699,16703,16711,16721,16725,16733,16737,16741,16745,16753,16758,16767,16776,16780,16784,16796,16800,16804],{"__ignoreMap":55},[250,16686,16687,16689,16691,16693],{"class":252,"line":253},[250,16688,1019],{"class":786},[250,16690,1022],{"class":786},[250,16692,1025],{"class":774},[250,16694,1028],{"class":912},[250,16696,16697],{"class":252,"line":113},[250,16698,14009],{"class":912},[250,16700,16701],{"class":252,"line":110},[250,16702,14014],{"class":912},[250,16704,16705,16707,16709],{"class":252,"line":269},[250,16706,14019],{"class":912},[250,16708,14022],{"class":782},[250,16710,927],{"class":912},[250,16712,16713,16716,16719],{"class":252,"line":275},[250,16714,16715],{"class":912},"      provider: ",[250,16717,16718],{"class":782},"\"github\"",[250,16720,927],{"class":912},[250,16722,16723],{"class":252,"line":281},[250,16724,14039],{"class":912},[250,16726,16727,16729,16731],{"class":252,"line":287},[250,16728,14044],{"class":912},[250,16730,1066],{"class":778},[250,16732,927],{"class":912},[250,16734,16735],{"class":252,"line":293},[250,16736,1048],{"class":912},[250,16738,16739],{"class":252,"line":299},[250,16740,1053],{"class":912},[250,16742,16743],{"class":252,"line":132},[250,16744,8929],{"class":912},[250,16746,16747,16749,16751],{"class":252,"line":310},[250,16748,14065],{"class":912},[250,16750,14068],{"class":778},[250,16752,927],{"class":912},[250,16754,16755],{"class":252,"line":316},[250,16756,16757],{"class":912},"    github: {\n",[250,16759,16760,16763,16765],{"class":252,"line":322},[250,16761,16762],{"class":912},"      clientId: process.env.",[250,16764,16660],{"class":778},[250,16766,927],{"class":912},[250,16768,16769,16772,16774],{"class":252,"line":328},[250,16770,16771],{"class":912},"      clientSecret: process.env.",[250,16773,16670],{"class":778},[250,16775,927],{"class":912},[250,16777,16778],{"class":252,"line":334},[250,16779,14039],{"class":912},[250,16781,16782],{"class":252,"line":340},[250,16783,8934],{"class":912},[250,16785,16786,16788,16790,16792,16794],{"class":252,"line":346},[250,16787,14079],{"class":912},[250,16789,14082],{"class":778},[250,16791,14085],{"class":786},[250,16793,14088],{"class":782},[250,16795,927],{"class":912},[250,16797,16798],{"class":252,"line":352},[250,16799,14039],{"class":912},[250,16801,16802],{"class":252,"line":358},[250,16803,1048],{"class":912},[250,16805,16806],{"class":252,"line":364},[250,16807,1077],{"class":912},[20,16809,1092,16810,1007],{},[39,16811,16812],{},"server\u002Fapi\u002Fauth\u002F[...].ts",[47,16814,16816],{"className":1010,"code":16815,"filename":16812,"language":1012,"meta":55,"style":55},"import { NuxtAuthHandler } from \"@sidebase\u002Fnuxt-auth\";\nimport GithubProvider from \"next-auth\u002Fproviders\u002Fgithub\";\n\nexport default NuxtAuthHandler({\n  secret: process.env.AUTH_SECRET,\n  providers: [\n    GithubProvider.default({\n      clientId: process.env.GITHUB_CLIENT_ID,\n      clientSecret: process.env.GITHUB_CLIENT_SECRET,\n    }),\n  ],\n});\n",[39,16817,16818,16832,16846,16850,16861,16870,16875,16884,16892,16900,16904,16908],{"__ignoreMap":55},[250,16819,16820,16822,16825,16827,16830],{"class":252,"line":253},[250,16821,1763],{"class":786},[250,16823,16824],{"class":912}," { NuxtAuthHandler } ",[250,16826,1769],{"class":786},[250,16828,16829],{"class":782}," \"@sidebase\u002Fnuxt-auth\"",[250,16831,1379],{"class":912},[250,16833,16834,16836,16839,16841,16844],{"class":252,"line":113},[250,16835,1763],{"class":786},[250,16837,16838],{"class":912}," GithubProvider ",[250,16840,1769],{"class":786},[250,16842,16843],{"class":782}," \"next-auth\u002Fproviders\u002Fgithub\"",[250,16845,1379],{"class":912},[250,16847,16848],{"class":252,"line":110},[250,16849,795],{"emptyLinePlaceholder":129},[250,16851,16852,16854,16856,16859],{"class":252,"line":269},[250,16853,1019],{"class":786},[250,16855,1022],{"class":786},[250,16857,16858],{"class":774}," NuxtAuthHandler",[250,16860,1028],{"class":912},[250,16862,16863,16866,16868],{"class":252,"line":275},[250,16864,16865],{"class":912},"  secret: process.env.",[250,16867,14068],{"class":778},[250,16869,927],{"class":912},[250,16871,16872],{"class":252,"line":281},[250,16873,16874],{"class":912},"  providers: [\n",[250,16876,16877,16880,16882],{"class":252,"line":287},[250,16878,16879],{"class":912},"    GithubProvider.",[250,16881,4573],{"class":774},[250,16883,1028],{"class":912},[250,16885,16886,16888,16890],{"class":252,"line":293},[250,16887,16762],{"class":912},[250,16889,16660],{"class":778},[250,16891,927],{"class":912},[250,16893,16894,16896,16898],{"class":252,"line":299},[250,16895,16771],{"class":912},[250,16897,16670],{"class":778},[250,16899,927],{"class":912},[250,16901,16902],{"class":252,"line":132},[250,16903,462],{"class":912},[250,16905,16906],{"class":252,"line":310},[250,16907,468],{"class":912},[250,16909,16910],{"class":252,"line":316},[250,16911,1077],{"class":912},[72,16913],{},[31,16915,16917],{"id":16916},"step-8-create-the-frontend-auth-pages","Step 8: Create the Frontend Auth Pages",[20,16919,1092,16920,1007],{},[39,16921,16922],{},"pages\u002Flogin.vue",[47,16924,16927],{"className":16925,"code":16926,"filename":16922,"language":13747,"meta":55,"style":55},"language-vue shiki shiki-themes github-light github-dark","\u003Ctemplate>\n  \u003Cdiv class=\"auth-page\">\n    \u003Ch1>Login to BrewStop\u003C\u002Fh1>\n    \n    \u003Cform @submit.prevent=\"handleLogin\">\n      \u003Cdiv class=\"form-group\">\n        \u003Clabel>Email\u003C\u002Flabel>\n        \u003Cinput v-model=\"email\" type=\"email\" required \u002F>\n      \u003C\u002Fdiv>\n      \n      \u003Cdiv class=\"form-group\">\n        \u003Clabel>Password\u003C\u002Flabel>\n        \u003Cinput v-model=\"password\" type=\"password\" required \u002F>\n      \u003C\u002Fdiv>\n      \n      \u003Cbutton type=\"submit\" :disabled=\"loading\">\n        {{ loading ? \"Logging in...\" : \"Login\" }}\n      \u003C\u002Fbutton>\n      \n      \u003Cp v-if=\"error\" class=\"error\">{{ error }}\u003C\u002Fp>\n    \u003C\u002Fform>\n    \n    \u003Cp class=\"oauth-separator\">or\u003C\u002Fp>\n    \n    \u003Cbutton @click=\"loginWithGithub\" class=\"github-btn\">\n      Continue with GitHub\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n\n\u003Cscript setup lang=\"ts\">\nconst email = ref(\"\");\nconst password = ref(\"\");\nconst loading = ref(false);\nconst error = ref(\"\");\n\nasync function handleLogin() {\n  loading.value = true;\n  error.value = \"\";\n  \n  try {\n    await $fetch(\"\u002Fapi\u002Fauth\u002Flogin\", {\n      method: \"POST\",\n      body: { email: email.value, password: password.value },\n    });\n    \n    navigateTo(\"\u002Fdashboard\");\n  } catch (e: any) {\n    error.value = e.data?.statusMessage || \"Login failed\";\n  } finally {\n    loading.value = false;\n  }\n}\n\nasync function loginWithGithub() {\n  await navigateTo(\"\u002Fapi\u002Fauth\u002Fsignin\u002Fgithub\", { external: true });\n}\n\u003C\u002Fscript>\n",[39,16928,16929,16939,16957,16971,16975,16992,17008,17023,17048,17057,17062,17076,17089,17111,17119,17123,17147,17152,17160,17164,17190,17199,17203,17223,17227,17250,17255,17263,17272,17280,17284,17302,17320,17337,17355,17372,17376,17387,17399,17411,17415,17421,17435,17445,17450,17454,17458,17470,17487,17504,17513,17525,17529,17533,17537,17548,17568,17572],{"__ignoreMap":55},[250,16930,16931,16933,16937],{"class":252,"line":253},[250,16932,1962],{"class":912},[250,16934,16936],{"class":16935},"s9eBZ","template",[250,16938,13111],{"class":912},[250,16940,16941,16944,16947,16950,16952,16955],{"class":252,"line":113},[250,16942,16943],{"class":912},"  \u003C",[250,16945,16946],{"class":16935},"div",[250,16948,16949],{"class":774}," class",[250,16951,1416],{"class":912},[250,16953,16954],{"class":782},"\"auth-page\"",[250,16956,13111],{"class":912},[250,16958,16959,16962,16964,16967,16969],{"class":252,"line":110},[250,16960,16961],{"class":912},"    \u003C",[250,16963,15],{"class":16935},[250,16965,16966],{"class":912},">Login to BrewStop\u003C\u002F",[250,16968,15],{"class":16935},[250,16970,13111],{"class":912},[250,16972,16973],{"class":252,"line":269},[250,16974,6458],{"class":912},[250,16976,16977,16979,16982,16985,16987,16990],{"class":252,"line":275},[250,16978,16961],{"class":912},[250,16980,16981],{"class":16935},"form",[250,16983,16984],{"class":774}," @submit.prevent",[250,16986,1416],{"class":912},[250,16988,16989],{"class":782},"\"handleLogin\"",[250,16991,13111],{"class":912},[250,16993,16994,16997,16999,17001,17003,17006],{"class":252,"line":281},[250,16995,16996],{"class":912},"      \u003C",[250,16998,16946],{"class":16935},[250,17000,16949],{"class":774},[250,17002,1416],{"class":912},[250,17004,17005],{"class":782},"\"form-group\"",[250,17007,13111],{"class":912},[250,17009,17010,17013,17016,17019,17021],{"class":252,"line":287},[250,17011,17012],{"class":912},"        \u003C",[250,17014,17015],{"class":16935},"label",[250,17017,17018],{"class":912},">Email\u003C\u002F",[250,17020,17015],{"class":16935},[250,17022,13111],{"class":912},[250,17024,17025,17027,17029,17032,17034,17036,17038,17040,17042,17045],{"class":252,"line":293},[250,17026,17012],{"class":912},[250,17028,14775],{"class":16935},[250,17030,17031],{"class":774}," v-model",[250,17033,1416],{"class":912},[250,17035,15116],{"class":782},[250,17037,4974],{"class":774},[250,17039,1416],{"class":912},[250,17041,15116],{"class":782},[250,17043,17044],{"class":774}," required",[250,17046,17047],{"class":912}," \u002F>\n",[250,17049,17050,17053,17055],{"class":252,"line":299},[250,17051,17052],{"class":912},"      \u003C\u002F",[250,17054,16946],{"class":16935},[250,17056,13111],{"class":912},[250,17058,17059],{"class":252,"line":132},[250,17060,17061],{"class":912},"      \n",[250,17063,17064,17066,17068,17070,17072,17074],{"class":252,"line":310},[250,17065,16996],{"class":912},[250,17067,16946],{"class":16935},[250,17069,16949],{"class":774},[250,17071,1416],{"class":912},[250,17073,17005],{"class":782},[250,17075,13111],{"class":912},[250,17077,17078,17080,17082,17085,17087],{"class":252,"line":316},[250,17079,17012],{"class":912},[250,17081,17015],{"class":16935},[250,17083,17084],{"class":912},">Password\u003C\u002F",[250,17086,17015],{"class":16935},[250,17088,13111],{"class":912},[250,17090,17091,17093,17095,17097,17099,17101,17103,17105,17107,17109],{"class":252,"line":322},[250,17092,17012],{"class":912},[250,17094,14775],{"class":16935},[250,17096,17031],{"class":774},[250,17098,1416],{"class":912},[250,17100,15139],{"class":782},[250,17102,4974],{"class":774},[250,17104,1416],{"class":912},[250,17106,15139],{"class":782},[250,17108,17044],{"class":774},[250,17110,17047],{"class":912},[250,17112,17113,17115,17117],{"class":252,"line":328},[250,17114,17052],{"class":912},[250,17116,16946],{"class":16935},[250,17118,13111],{"class":912},[250,17120,17121],{"class":252,"line":334},[250,17122,17061],{"class":912},[250,17124,17125,17127,17130,17132,17134,17137,17140,17142,17145],{"class":252,"line":340},[250,17126,16996],{"class":912},[250,17128,17129],{"class":16935},"button",[250,17131,4974],{"class":774},[250,17133,1416],{"class":912},[250,17135,17136],{"class":782},"\"submit\"",[250,17138,17139],{"class":774}," :disabled",[250,17141,1416],{"class":912},[250,17143,17144],{"class":782},"\"loading\"",[250,17146,13111],{"class":912},[250,17148,17149],{"class":252,"line":346},[250,17150,17151],{"class":912},"        {{ loading ? \"Logging in...\" : \"Login\" }}\n",[250,17153,17154,17156,17158],{"class":252,"line":352},[250,17155,17052],{"class":912},[250,17157,17129],{"class":16935},[250,17159,13111],{"class":912},[250,17161,17162],{"class":252,"line":358},[250,17163,17061],{"class":912},[250,17165,17166,17168,17170,17173,17175,17177,17179,17181,17183,17186,17188],{"class":252,"line":364},[250,17167,16996],{"class":912},[250,17169,20],{"class":16935},[250,17171,17172],{"class":774}," v-if",[250,17174,1416],{"class":912},[250,17176,12292],{"class":782},[250,17178,16949],{"class":774},[250,17180,1416],{"class":912},[250,17182,12292],{"class":782},[250,17184,17185],{"class":912},">{{ error }}\u003C\u002F",[250,17187,20],{"class":16935},[250,17189,13111],{"class":912},[250,17191,17192,17195,17197],{"class":252,"line":370},[250,17193,17194],{"class":912},"    \u003C\u002F",[250,17196,16981],{"class":16935},[250,17198,13111],{"class":912},[250,17200,17201],{"class":252,"line":376},[250,17202,6458],{"class":912},[250,17204,17205,17207,17209,17211,17213,17216,17219,17221],{"class":252,"line":382},[250,17206,16961],{"class":912},[250,17208,20],{"class":16935},[250,17210,16949],{"class":774},[250,17212,1416],{"class":912},[250,17214,17215],{"class":782},"\"oauth-separator\"",[250,17217,17218],{"class":912},">or\u003C\u002F",[250,17220,20],{"class":16935},[250,17222,13111],{"class":912},[250,17224,17225],{"class":252,"line":388},[250,17226,6458],{"class":912},[250,17228,17229,17231,17233,17236,17238,17241,17243,17245,17248],{"class":252,"line":393},[250,17230,16961],{"class":912},[250,17232,17129],{"class":16935},[250,17234,17235],{"class":774}," @click",[250,17237,1416],{"class":912},[250,17239,17240],{"class":782},"\"loginWithGithub\"",[250,17242,16949],{"class":774},[250,17244,1416],{"class":912},[250,17246,17247],{"class":782},"\"github-btn\"",[250,17249,13111],{"class":912},[250,17251,17252],{"class":252,"line":399},[250,17253,17254],{"class":912},"      Continue with GitHub\n",[250,17256,17257,17259,17261],{"class":252,"line":405},[250,17258,17194],{"class":912},[250,17260,17129],{"class":16935},[250,17262,13111],{"class":912},[250,17264,17265,17268,17270],{"class":252,"line":410},[250,17266,17267],{"class":912},"  \u003C\u002F",[250,17269,16946],{"class":16935},[250,17271,13111],{"class":912},[250,17273,17274,17276,17278],{"class":252,"line":415},[250,17275,13209],{"class":912},[250,17277,16936],{"class":16935},[250,17279,13111],{"class":912},[250,17281,17282],{"class":252,"line":420},[250,17283,795],{"emptyLinePlaceholder":129},[250,17285,17286,17288,17290,17293,17296,17298,17300],{"class":252,"line":426},[250,17287,1962],{"class":912},[250,17289,13212],{"class":16935},[250,17291,17292],{"class":774}," setup",[250,17294,17295],{"class":774}," lang",[250,17297,1416],{"class":912},[250,17299,13108],{"class":782},[250,17301,13111],{"class":912},[250,17303,17304,17306,17309,17311,17313,17315,17318],{"class":252,"line":431},[250,17305,1181],{"class":786},[250,17307,17308],{"class":778}," email",[250,17310,1187],{"class":786},[250,17312,13496],{"class":774},[250,17314,1434],{"class":912},[250,17316,17317],{"class":782},"\"\"",[250,17319,1885],{"class":912},[250,17321,17322,17324,17327,17329,17331,17333,17335],{"class":252,"line":436},[250,17323,1181],{"class":786},[250,17325,17326],{"class":778}," password",[250,17328,1187],{"class":786},[250,17330,13496],{"class":774},[250,17332,1434],{"class":912},[250,17334,17317],{"class":782},[250,17336,1885],{"class":912},[250,17338,17339,17341,17344,17346,17348,17350,17353],{"class":252,"line":442},[250,17340,1181],{"class":786},[250,17342,17343],{"class":778}," loading",[250,17345,1187],{"class":786},[250,17347,13496],{"class":774},[250,17349,1434],{"class":912},[250,17351,17352],{"class":778},"false",[250,17354,1885],{"class":912},[250,17356,17357,17359,17362,17364,17366,17368,17370],{"class":252,"line":447},[250,17358,1181],{"class":786},[250,17360,17361],{"class":778}," error",[250,17363,1187],{"class":786},[250,17365,13496],{"class":774},[250,17367,1434],{"class":912},[250,17369,17317],{"class":782},[250,17371,1885],{"class":912},[250,17373,17374],{"class":252,"line":453},[250,17375,795],{"emptyLinePlaceholder":129},[250,17377,17378,17380,17382,17385],{"class":252,"line":459},[250,17379,1437],{"class":786},[250,17381,1845],{"class":786},[250,17383,17384],{"class":774}," handleLogin",[250,17386,1851],{"class":912},[250,17388,17389,17392,17394,17397],{"class":252,"line":465},[250,17390,17391],{"class":912},"  loading.value ",[250,17393,1416],{"class":786},[250,17395,17396],{"class":778}," true",[250,17398,1379],{"class":912},[250,17400,17401,17404,17406,17409],{"class":252,"line":471},[250,17402,17403],{"class":912},"  error.value ",[250,17405,1416],{"class":786},[250,17407,17408],{"class":782}," \"\"",[250,17410,1379],{"class":912},[250,17412,17413],{"class":252,"line":2201},[250,17414,1053],{"class":912},[250,17416,17417,17419],{"class":252,"line":2207},[250,17418,14553],{"class":786},[250,17420,1118],{"class":912},[250,17422,17423,17425,17428,17430,17433],{"class":252,"line":2213},[250,17424,5725],{"class":786},[250,17426,17427],{"class":774}," $fetch",[250,17429,1434],{"class":912},[250,17431,17432],{"class":782},"\"\u002Fapi\u002Fauth\u002Flogin\"",[250,17434,4454],{"class":912},[250,17436,17437,17440,17443],{"class":252,"line":2218},[250,17438,17439],{"class":912},"      method: ",[250,17441,17442],{"class":782},"\"POST\"",[250,17444,927],{"class":912},[250,17446,17447],{"class":252,"line":2223},[250,17448,17449],{"class":912},"      body: { email: email.value, password: password.value },\n",[250,17451,17452],{"class":252,"line":2239},[250,17453,1547],{"class":912},[250,17455,17456],{"class":252,"line":2244},[250,17457,6458],{"class":912},[250,17459,17460,17463,17465,17468],{"class":252,"line":2267},[250,17461,17462],{"class":774},"    navigateTo",[250,17464,1434],{"class":912},[250,17466,17467],{"class":782},"\"\u002Fdashboard\"",[250,17469,1885],{"class":912},[250,17471,17472,17474,17476,17478,17481,17483,17485],{"class":252,"line":2301},[250,17473,14609],{"class":912},[250,17475,2164],{"class":786},[250,17477,1440],{"class":912},[250,17479,17480],{"class":1370},"e",[250,17482,1007],{"class":786},[250,17484,1410],{"class":778},[250,17486,1512],{"class":912},[250,17488,17489,17492,17494,17497,17499,17502],{"class":252,"line":2306},[250,17490,17491],{"class":912},"    error.value ",[250,17493,1416],{"class":786},[250,17495,17496],{"class":912}," e.data?.statusMessage ",[250,17498,1497],{"class":786},[250,17500,17501],{"class":782}," \"Login failed\"",[250,17503,1379],{"class":912},[250,17505,17506,17508,17511],{"class":252,"line":2320},[250,17507,14609],{"class":912},[250,17509,17510],{"class":786},"finally",[250,17512,1118],{"class":912},[250,17514,17515,17518,17520,17523],{"class":252,"line":2340},[250,17516,17517],{"class":912},"    loading.value ",[250,17519,1416],{"class":786},[250,17521,17522],{"class":778}," false",[250,17524,1379],{"class":912},[250,17526,17527],{"class":252,"line":2360},[250,17528,986],{"class":912},[250,17530,17531],{"class":252,"line":2397},[250,17532,991],{"class":912},[250,17534,17535],{"class":252,"line":2402},[250,17536,795],{"emptyLinePlaceholder":129},[250,17538,17539,17541,17543,17546],{"class":252,"line":2407},[250,17540,1437],{"class":786},[250,17542,1845],{"class":786},[250,17544,17545],{"class":774}," loginWithGithub",[250,17547,1851],{"class":912},[250,17549,17550,17552,17555,17557,17560,17563,17565],{"class":252,"line":6667},[250,17551,1565],{"class":786},[250,17553,17554],{"class":774}," navigateTo",[250,17556,1434],{"class":912},[250,17558,17559],{"class":782},"\"\u002Fapi\u002Fauth\u002Fsignin\u002Fgithub\"",[250,17561,17562],{"class":912},", { external: ",[250,17564,1066],{"class":778},[250,17566,17567],{"class":912}," });\n",[250,17569,17570],{"class":252,"line":6672},[250,17571,991],{"class":912},[250,17573,17574,17576,17578],{"class":252,"line":6688},[250,17575,13209],{"class":912},[250,17577,13212],{"class":16935},[250,17579,13111],{"class":912},[20,17581,1092,17582,1007],{},[39,17583,17584],{},"pages\u002Fregister.vue",[47,17586,17588],{"className":16925,"code":17587,"filename":17584,"language":13747,"meta":55,"style":55},"\u003Ctemplate>\n  \u003Cdiv class=\"auth-page\">\n    \u003Ch1>Create an Account\u003C\u002Fh1>\n    \n    \u003Cform @submit.prevent=\"handleRegister\">\n      \u003Cdiv class=\"form-group\">\n        \u003Clabel>Name\u003C\u002Flabel>\n        \u003Cinput v-model=\"name\" type=\"text\" required \u002F>\n      \u003C\u002Fdiv>\n      \n      \u003Cdiv class=\"form-group\">\n        \u003Clabel>Email\u003C\u002Flabel>\n        \u003Cinput v-model=\"email\" type=\"email\" required \u002F>\n      \u003C\u002Fdiv>\n      \n      \u003Cdiv class=\"form-group\">\n        \u003Clabel>Password\u003C\u002Flabel>\n        \u003Cinput v-model=\"password\" type=\"password\" required \u002F>\n      \u003C\u002Fdiv>\n      \n      \u003Cbutton type=\"submit\" :disabled=\"loading\">\n        {{ loading ? \"Creating account...\" : \"Register\" }}\n      \u003C\u002Fbutton>\n      \n      \u003Cp v-if=\"error\" class=\"error\">{{ error }}\u003C\u002Fp>\n    \u003C\u002Fform>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n\n\u003Cscript setup lang=\"ts\">\nconst name = ref(\"\");\nconst email = ref(\"\");\nconst password = ref(\"\");\nconst loading = ref(false);\nconst error = ref(\"\");\n\nasync function handleRegister() {\n  loading.value = true;\n  error.value = \"\";\n  \n  try {\n    await $fetch(\"\u002Fapi\u002Fauth\u002Fregister\", {\n      method: \"POST\",\n      body: { name: name.value, email: email.value, password: password.value },\n    });\n    \n    navigateTo(\"\u002Fdashboard\");\n  } catch (e: any) {\n    error.value = e.data?.statusMessage || \"Registration failed\";\n  } finally {\n    loading.value = false;\n  }\n}\n\u003C\u002Fscript>\n",[39,17589,17590,17598,17612,17625,17629,17644,17658,17671,17694,17702,17706,17720,17732,17754,17762,17766,17780,17792,17814,17822,17826,17846,17851,17859,17863,17887,17895,17903,17911,17915,17931,17948,17964,17980,17996,18012,18016,18027,18037,18047,18051,18057,18070,18078,18083,18087,18091,18101,18117,18132,18140,18150,18154,18158],{"__ignoreMap":55},[250,17591,17592,17594,17596],{"class":252,"line":253},[250,17593,1962],{"class":912},[250,17595,16936],{"class":16935},[250,17597,13111],{"class":912},[250,17599,17600,17602,17604,17606,17608,17610],{"class":252,"line":113},[250,17601,16943],{"class":912},[250,17603,16946],{"class":16935},[250,17605,16949],{"class":774},[250,17607,1416],{"class":912},[250,17609,16954],{"class":782},[250,17611,13111],{"class":912},[250,17613,17614,17616,17618,17621,17623],{"class":252,"line":110},[250,17615,16961],{"class":912},[250,17617,15],{"class":16935},[250,17619,17620],{"class":912},">Create an Account\u003C\u002F",[250,17622,15],{"class":16935},[250,17624,13111],{"class":912},[250,17626,17627],{"class":252,"line":269},[250,17628,6458],{"class":912},[250,17630,17631,17633,17635,17637,17639,17642],{"class":252,"line":275},[250,17632,16961],{"class":912},[250,17634,16981],{"class":16935},[250,17636,16984],{"class":774},[250,17638,1416],{"class":912},[250,17640,17641],{"class":782},"\"handleRegister\"",[250,17643,13111],{"class":912},[250,17645,17646,17648,17650,17652,17654,17656],{"class":252,"line":281},[250,17647,16996],{"class":912},[250,17649,16946],{"class":16935},[250,17651,16949],{"class":774},[250,17653,1416],{"class":912},[250,17655,17005],{"class":782},[250,17657,13111],{"class":912},[250,17659,17660,17662,17664,17667,17669],{"class":252,"line":287},[250,17661,17012],{"class":912},[250,17663,17015],{"class":16935},[250,17665,17666],{"class":912},">Name\u003C\u002F",[250,17668,17015],{"class":16935},[250,17670,13111],{"class":912},[250,17672,17673,17675,17677,17679,17681,17683,17685,17687,17690,17692],{"class":252,"line":293},[250,17674,17012],{"class":912},[250,17676,14775],{"class":16935},[250,17678,17031],{"class":774},[250,17680,1416],{"class":912},[250,17682,4485],{"class":782},[250,17684,4974],{"class":774},[250,17686,1416],{"class":912},[250,17688,17689],{"class":782},"\"text\"",[250,17691,17044],{"class":774},[250,17693,17047],{"class":912},[250,17695,17696,17698,17700],{"class":252,"line":299},[250,17697,17052],{"class":912},[250,17699,16946],{"class":16935},[250,17701,13111],{"class":912},[250,17703,17704],{"class":252,"line":132},[250,17705,17061],{"class":912},[250,17707,17708,17710,17712,17714,17716,17718],{"class":252,"line":310},[250,17709,16996],{"class":912},[250,17711,16946],{"class":16935},[250,17713,16949],{"class":774},[250,17715,1416],{"class":912},[250,17717,17005],{"class":782},[250,17719,13111],{"class":912},[250,17721,17722,17724,17726,17728,17730],{"class":252,"line":316},[250,17723,17012],{"class":912},[250,17725,17015],{"class":16935},[250,17727,17018],{"class":912},[250,17729,17015],{"class":16935},[250,17731,13111],{"class":912},[250,17733,17734,17736,17738,17740,17742,17744,17746,17748,17750,17752],{"class":252,"line":322},[250,17735,17012],{"class":912},[250,17737,14775],{"class":16935},[250,17739,17031],{"class":774},[250,17741,1416],{"class":912},[250,17743,15116],{"class":782},[250,17745,4974],{"class":774},[250,17747,1416],{"class":912},[250,17749,15116],{"class":782},[250,17751,17044],{"class":774},[250,17753,17047],{"class":912},[250,17755,17756,17758,17760],{"class":252,"line":328},[250,17757,17052],{"class":912},[250,17759,16946],{"class":16935},[250,17761,13111],{"class":912},[250,17763,17764],{"class":252,"line":334},[250,17765,17061],{"class":912},[250,17767,17768,17770,17772,17774,17776,17778],{"class":252,"line":340},[250,17769,16996],{"class":912},[250,17771,16946],{"class":16935},[250,17773,16949],{"class":774},[250,17775,1416],{"class":912},[250,17777,17005],{"class":782},[250,17779,13111],{"class":912},[250,17781,17782,17784,17786,17788,17790],{"class":252,"line":346},[250,17783,17012],{"class":912},[250,17785,17015],{"class":16935},[250,17787,17084],{"class":912},[250,17789,17015],{"class":16935},[250,17791,13111],{"class":912},[250,17793,17794,17796,17798,17800,17802,17804,17806,17808,17810,17812],{"class":252,"line":352},[250,17795,17012],{"class":912},[250,17797,14775],{"class":16935},[250,17799,17031],{"class":774},[250,17801,1416],{"class":912},[250,17803,15139],{"class":782},[250,17805,4974],{"class":774},[250,17807,1416],{"class":912},[250,17809,15139],{"class":782},[250,17811,17044],{"class":774},[250,17813,17047],{"class":912},[250,17815,17816,17818,17820],{"class":252,"line":358},[250,17817,17052],{"class":912},[250,17819,16946],{"class":16935},[250,17821,13111],{"class":912},[250,17823,17824],{"class":252,"line":364},[250,17825,17061],{"class":912},[250,17827,17828,17830,17832,17834,17836,17838,17840,17842,17844],{"class":252,"line":370},[250,17829,16996],{"class":912},[250,17831,17129],{"class":16935},[250,17833,4974],{"class":774},[250,17835,1416],{"class":912},[250,17837,17136],{"class":782},[250,17839,17139],{"class":774},[250,17841,1416],{"class":912},[250,17843,17144],{"class":782},[250,17845,13111],{"class":912},[250,17847,17848],{"class":252,"line":376},[250,17849,17850],{"class":912},"        {{ loading ? \"Creating account...\" : \"Register\" }}\n",[250,17852,17853,17855,17857],{"class":252,"line":382},[250,17854,17052],{"class":912},[250,17856,17129],{"class":16935},[250,17858,13111],{"class":912},[250,17860,17861],{"class":252,"line":388},[250,17862,17061],{"class":912},[250,17864,17865,17867,17869,17871,17873,17875,17877,17879,17881,17883,17885],{"class":252,"line":393},[250,17866,16996],{"class":912},[250,17868,20],{"class":16935},[250,17870,17172],{"class":774},[250,17872,1416],{"class":912},[250,17874,12292],{"class":782},[250,17876,16949],{"class":774},[250,17878,1416],{"class":912},[250,17880,12292],{"class":782},[250,17882,17185],{"class":912},[250,17884,20],{"class":16935},[250,17886,13111],{"class":912},[250,17888,17889,17891,17893],{"class":252,"line":399},[250,17890,17194],{"class":912},[250,17892,16981],{"class":16935},[250,17894,13111],{"class":912},[250,17896,17897,17899,17901],{"class":252,"line":405},[250,17898,17267],{"class":912},[250,17900,16946],{"class":16935},[250,17902,13111],{"class":912},[250,17904,17905,17907,17909],{"class":252,"line":410},[250,17906,13209],{"class":912},[250,17908,16936],{"class":16935},[250,17910,13111],{"class":912},[250,17912,17913],{"class":252,"line":415},[250,17914,795],{"emptyLinePlaceholder":129},[250,17916,17917,17919,17921,17923,17925,17927,17929],{"class":252,"line":420},[250,17918,1962],{"class":912},[250,17920,13212],{"class":16935},[250,17922,17292],{"class":774},[250,17924,17295],{"class":774},[250,17926,1416],{"class":912},[250,17928,13108],{"class":782},[250,17930,13111],{"class":912},[250,17932,17933,17935,17938,17940,17942,17944,17946],{"class":252,"line":426},[250,17934,1181],{"class":786},[250,17936,17937],{"class":778}," name",[250,17939,1187],{"class":786},[250,17941,13496],{"class":774},[250,17943,1434],{"class":912},[250,17945,17317],{"class":782},[250,17947,1885],{"class":912},[250,17949,17950,17952,17954,17956,17958,17960,17962],{"class":252,"line":431},[250,17951,1181],{"class":786},[250,17953,17308],{"class":778},[250,17955,1187],{"class":786},[250,17957,13496],{"class":774},[250,17959,1434],{"class":912},[250,17961,17317],{"class":782},[250,17963,1885],{"class":912},[250,17965,17966,17968,17970,17972,17974,17976,17978],{"class":252,"line":436},[250,17967,1181],{"class":786},[250,17969,17326],{"class":778},[250,17971,1187],{"class":786},[250,17973,13496],{"class":774},[250,17975,1434],{"class":912},[250,17977,17317],{"class":782},[250,17979,1885],{"class":912},[250,17981,17982,17984,17986,17988,17990,17992,17994],{"class":252,"line":442},[250,17983,1181],{"class":786},[250,17985,17343],{"class":778},[250,17987,1187],{"class":786},[250,17989,13496],{"class":774},[250,17991,1434],{"class":912},[250,17993,17352],{"class":778},[250,17995,1885],{"class":912},[250,17997,17998,18000,18002,18004,18006,18008,18010],{"class":252,"line":447},[250,17999,1181],{"class":786},[250,18001,17361],{"class":778},[250,18003,1187],{"class":786},[250,18005,13496],{"class":774},[250,18007,1434],{"class":912},[250,18009,17317],{"class":782},[250,18011,1885],{"class":912},[250,18013,18014],{"class":252,"line":453},[250,18015,795],{"emptyLinePlaceholder":129},[250,18017,18018,18020,18022,18025],{"class":252,"line":459},[250,18019,1437],{"class":786},[250,18021,1845],{"class":786},[250,18023,18024],{"class":774}," handleRegister",[250,18026,1851],{"class":912},[250,18028,18029,18031,18033,18035],{"class":252,"line":465},[250,18030,17391],{"class":912},[250,18032,1416],{"class":786},[250,18034,17396],{"class":778},[250,18036,1379],{"class":912},[250,18038,18039,18041,18043,18045],{"class":252,"line":471},[250,18040,17403],{"class":912},[250,18042,1416],{"class":786},[250,18044,17408],{"class":782},[250,18046,1379],{"class":912},[250,18048,18049],{"class":252,"line":2201},[250,18050,1053],{"class":912},[250,18052,18053,18055],{"class":252,"line":2207},[250,18054,14553],{"class":786},[250,18056,1118],{"class":912},[250,18058,18059,18061,18063,18065,18068],{"class":252,"line":2213},[250,18060,5725],{"class":786},[250,18062,17427],{"class":774},[250,18064,1434],{"class":912},[250,18066,18067],{"class":782},"\"\u002Fapi\u002Fauth\u002Fregister\"",[250,18069,4454],{"class":912},[250,18071,18072,18074,18076],{"class":252,"line":2218},[250,18073,17439],{"class":912},[250,18075,17442],{"class":782},[250,18077,927],{"class":912},[250,18079,18080],{"class":252,"line":2223},[250,18081,18082],{"class":912},"      body: { name: name.value, email: email.value, password: password.value },\n",[250,18084,18085],{"class":252,"line":2239},[250,18086,1547],{"class":912},[250,18088,18089],{"class":252,"line":2244},[250,18090,6458],{"class":912},[250,18092,18093,18095,18097,18099],{"class":252,"line":2267},[250,18094,17462],{"class":774},[250,18096,1434],{"class":912},[250,18098,17467],{"class":782},[250,18100,1885],{"class":912},[250,18102,18103,18105,18107,18109,18111,18113,18115],{"class":252,"line":2301},[250,18104,14609],{"class":912},[250,18106,2164],{"class":786},[250,18108,1440],{"class":912},[250,18110,17480],{"class":1370},[250,18112,1007],{"class":786},[250,18114,1410],{"class":778},[250,18116,1512],{"class":912},[250,18118,18119,18121,18123,18125,18127,18130],{"class":252,"line":2306},[250,18120,17491],{"class":912},[250,18122,1416],{"class":786},[250,18124,17496],{"class":912},[250,18126,1497],{"class":786},[250,18128,18129],{"class":782}," \"Registration failed\"",[250,18131,1379],{"class":912},[250,18133,18134,18136,18138],{"class":252,"line":2320},[250,18135,14609],{"class":912},[250,18137,17510],{"class":786},[250,18139,1118],{"class":912},[250,18141,18142,18144,18146,18148],{"class":252,"line":2340},[250,18143,17517],{"class":912},[250,18145,1416],{"class":786},[250,18147,17522],{"class":778},[250,18149,1379],{"class":912},[250,18151,18152],{"class":252,"line":2360},[250,18153,986],{"class":912},[250,18155,18156],{"class":252,"line":2397},[250,18157,991],{"class":912},[250,18159,18160,18162,18164],{"class":252,"line":2402},[250,18161,13209],{"class":912},[250,18163,13212],{"class":16935},[250,18165,13111],{"class":912},[72,18167],{},[31,18169,18171],{"id":18170},"step-9-use-auth-composable","Step 9: Use Auth Composable",[20,18173,18174],{},"Nuxt provides a composable for easy auth state management.",[47,18176,18179],{"className":1010,"code":18177,"filename":18178,"language":1012,"meta":55,"style":55},"export const useAuth = () => {\n  const user = useState(\"auth-user\", () => null);\n  const loading = useState(\"auth-loading\", () => true);\n  \n  const fetchUser = async () => {\n    loading.value = true;\n    try {\n      user.value = await $fetch(\"\u002Fapi\u002Fauth\u002Fme\");\n    } catch {\n      user.value = null;\n    } finally {\n      loading.value = false;\n    }\n  };\n  \n  const logout = async () => {\n    await $fetch(\"\u002Fapi\u002Fauth\u002Flogout\", { method: \"POST\" });\n    user.value = null;\n    navigateTo(\"\u002Flogin\");\n  };\n  \n  return { user, loading, fetchUser, logout };\n};\n","composables\u002FuseAuth.ts",[39,18180,18181,18198,18222,18245,18249,18266,18276,18283,18301,18310,18320,18328,18339,18343,18347,18351,18368,18386,18397,18408,18412,18416,18423],{"__ignoreMap":55},[250,18182,18183,18185,18187,18190,18192,18194,18196],{"class":252,"line":253},[250,18184,1019],{"class":786},[250,18186,4438],{"class":786},[250,18188,18189],{"class":774}," useAuth",[250,18191,1187],{"class":786},[250,18193,2015],{"class":912},[250,18195,1115],{"class":786},[250,18197,1118],{"class":912},[250,18199,18200,18202,18204,18206,18209,18211,18214,18216,18218,18220],{"class":252,"line":113},[250,18201,1455],{"class":786},[250,18203,14943],{"class":778},[250,18205,1187],{"class":786},[250,18207,18208],{"class":774}," useState",[250,18210,1434],{"class":912},[250,18212,18213],{"class":782},"\"auth-user\"",[250,18215,13157],{"class":912},[250,18217,1115],{"class":786},[250,18219,14546],{"class":778},[250,18221,1885],{"class":912},[250,18223,18224,18226,18228,18230,18232,18234,18237,18239,18241,18243],{"class":252,"line":110},[250,18225,1455],{"class":786},[250,18227,17343],{"class":778},[250,18229,1187],{"class":786},[250,18231,18208],{"class":774},[250,18233,1434],{"class":912},[250,18235,18236],{"class":782},"\"auth-loading\"",[250,18238,13157],{"class":912},[250,18240,1115],{"class":786},[250,18242,17396],{"class":778},[250,18244,1885],{"class":912},[250,18246,18247],{"class":252,"line":269},[250,18248,1053],{"class":912},[250,18250,18251,18253,18256,18258,18260,18262,18264],{"class":252,"line":275},[250,18252,1455],{"class":786},[250,18254,18255],{"class":774}," fetchUser",[250,18257,1187],{"class":786},[250,18259,2012],{"class":786},[250,18261,2015],{"class":912},[250,18263,1115],{"class":786},[250,18265,1118],{"class":912},[250,18267,18268,18270,18272,18274],{"class":252,"line":281},[250,18269,17517],{"class":912},[250,18271,1416],{"class":786},[250,18273,17396],{"class":778},[250,18275,1379],{"class":912},[250,18277,18278,18281],{"class":252,"line":287},[250,18279,18280],{"class":786},"    try",[250,18282,1118],{"class":912},[250,18284,18285,18288,18290,18292,18294,18296,18299],{"class":252,"line":293},[250,18286,18287],{"class":912},"      user.value ",[250,18289,1416],{"class":786},[250,18291,1463],{"class":786},[250,18293,17427],{"class":774},[250,18295,1434],{"class":912},[250,18297,18298],{"class":782},"\"\u002Fapi\u002Fauth\u002Fme\"",[250,18300,1885],{"class":912},[250,18302,18303,18306,18308],{"class":252,"line":299},[250,18304,18305],{"class":912},"    } ",[250,18307,2164],{"class":786},[250,18309,1118],{"class":912},[250,18311,18312,18314,18316,18318],{"class":252,"line":132},[250,18313,18287],{"class":912},[250,18315,1416],{"class":786},[250,18317,14546],{"class":778},[250,18319,1379],{"class":912},[250,18321,18322,18324,18326],{"class":252,"line":310},[250,18323,18305],{"class":912},[250,18325,17510],{"class":786},[250,18327,1118],{"class":912},[250,18329,18330,18333,18335,18337],{"class":252,"line":316},[250,18331,18332],{"class":912},"      loading.value ",[250,18334,1416],{"class":786},[250,18336,17522],{"class":778},[250,18338,1379],{"class":912},[250,18340,18341],{"class":252,"line":322},[250,18342,3684],{"class":912},[250,18344,18345],{"class":252,"line":328},[250,18346,1161],{"class":912},[250,18348,18349],{"class":252,"line":334},[250,18350,1053],{"class":912},[250,18352,18353,18355,18358,18360,18362,18364,18366],{"class":252,"line":340},[250,18354,1455],{"class":786},[250,18356,18357],{"class":774}," logout",[250,18359,1187],{"class":786},[250,18361,2012],{"class":786},[250,18363,2015],{"class":912},[250,18365,1115],{"class":786},[250,18367,1118],{"class":912},[250,18369,18370,18372,18374,18376,18379,18382,18384],{"class":252,"line":346},[250,18371,5725],{"class":786},[250,18373,17427],{"class":774},[250,18375,1434],{"class":912},[250,18377,18378],{"class":782},"\"\u002Fapi\u002Fauth\u002Flogout\"",[250,18380,18381],{"class":912},", { method: ",[250,18383,17442],{"class":782},[250,18385,17567],{"class":912},[250,18387,18388,18391,18393,18395],{"class":252,"line":352},[250,18389,18390],{"class":912},"    user.value ",[250,18392,1416],{"class":786},[250,18394,14546],{"class":778},[250,18396,1379],{"class":912},[250,18398,18399,18401,18403,18406],{"class":252,"line":358},[250,18400,17462],{"class":774},[250,18402,1434],{"class":912},[250,18404,18405],{"class":782},"\"\u002Flogin\"",[250,18407,1885],{"class":912},[250,18409,18410],{"class":252,"line":364},[250,18411,1161],{"class":912},[250,18413,18414],{"class":252,"line":370},[250,18415,1053],{"class":912},[250,18417,18418,18420],{"class":252,"line":376},[250,18419,1123],{"class":786},[250,18421,18422],{"class":912}," { user, loading, fetchUser, logout };\n",[250,18424,18425],{"class":252,"line":382},[250,18426,10945],{"class":912},[72,18428],{},[31,18430,18432],{"id":18431},"security-checklist","Security Checklist",[20,18434,18435],{},"Before going to production, verify:",[24,18437,18438],{"type":26},[561,18439,18442,18450,18456,18462,18468,18474,18480],{"className":18440},[18441],"contains-task-list",[564,18443,18446,18449],{"className":18444},[18445],"task-list-item",[14775,18447],{"disabled":129,"type":18448},"checkbox"," HTTPS enabled",[564,18451,18453,18455],{"className":18452},[18445],[14775,18454],{"disabled":129,"type":18448}," AUTH_SECRET is set and secure",[564,18457,18459,18461],{"className":18458},[18445],[14775,18460],{"disabled":129,"type":18448}," Passwords are hashed with Argon2 or bcrypt",[564,18463,18465,18467],{"className":18464},[18445],[14775,18466],{"disabled":129,"type":18448}," Cookie has httpOnly, secure, and sameSite flags",[564,18469,18471,18473],{"className":18470},[18445],[14775,18472],{"disabled":129,"type":18448}," Rate limiting on login\u002Fregister endpoints",[564,18475,18477,18479],{"className":18476},[18445],[14775,18478],{"disabled":129,"type":18448}," Email validation implemented",[564,18481,18483,18485],{"className":18482},[18445],[14775,18484],{"disabled":129,"type":18448}," Password strength requirements enforced",[72,18487],{},[31,18489,18491],{"id":18490},"api-routes-summary","API Routes Summary",[645,18493,18494,18504],{},[648,18495,18496],{},[651,18497,18498,18500,18502],{},[654,18499,8060],{},[654,18501,3289],{},[654,18503,3292],{},[666,18505,18506,18518,18530,18542,18554],{},[651,18507,18508,18510,18515],{},[671,18509,8096],{},[671,18511,18512],{},[39,18513,18514],{},"\u002Fapi\u002Fauth\u002Fregister",[671,18516,18517],{},"Create new account",[651,18519,18520,18522,18527],{},[671,18521,8096],{},[671,18523,18524],{},[39,18525,18526],{},"\u002Fapi\u002Fauth\u002Flogin",[671,18528,18529],{},"Authenticate user",[651,18531,18532,18534,18539],{},[671,18533,8096],{},[671,18535,18536],{},[39,18537,18538],{},"\u002Fapi\u002Fauth\u002Flogout",[671,18540,18541],{},"Clear session",[651,18543,18544,18546,18551],{},[671,18545,8071],{},[671,18547,18548],{},[39,18549,18550],{},"\u002Fapi\u002Fauth\u002Fme",[671,18552,18553],{},"Get current user",[651,18555,18556,18558,18563],{},[671,18557,8071],{},[671,18559,18560],{},[39,18561,18562],{},"\u002Fapi\u002Fauth\u002F[...]",[671,18564,18565],{},"OAuth handlers",[72,18567],{},[15,18569,3352],{"id":3351},[20,18571,18572],{},"Authentication is complex, but with Nuxt 4 and the right tools, you can build a secure system without reinventing the wheel. We've covered:",[561,18574,18575,18581,18587,18593,18599],{},[564,18576,18577,18580],{},[546,18578,18579],{},"Credentials-based auth"," with secure password hashing",[564,18582,18583,18586],{},[546,18584,18585],{},"JWT tokens"," stored in httpOnly cookies",[564,18588,18589,18592],{},[546,18590,18591],{},"OAuth integration"," with GitHub",[564,18594,18595,18598],{},[546,18596,18597],{},"Protected API routes"," for authenticated endpoints",[564,18600,18601,18604],{},[546,18602,18603],{},"Frontend auth pages"," with proper error handling",[20,18606,18607],{},"The key takeaways:",[2922,18609,18610,18616,18622,18628],{},[564,18611,18612,18615],{},[546,18613,18614],{},"Never store plain-text passwords"," — use Argon2 or bcrypt",[564,18617,18618,18621],{},[546,18619,18620],{},"Use httpOnly cookies"," for token storage",[564,18623,18624,18627],{},[546,18625,18626],{},"Validate everything"," on both client and server",[564,18629,18630,18633],{},[546,18631,18632],{},"Use established libraries"," rather than rolling your own",[20,18635,18636],{},"In production, consider adding:",[561,18638,18639,18642,18645,18648],{},[564,18640,18641],{},"Rate limiting on auth endpoints",[564,18643,18644],{},"Email verification flow",[564,18646,18647],{},"Password reset functionality",[564,18649,18650],{},"Two-factor authentication",[20,18652,18653],{},"Now go forth and secure your applications! 🔐",[500,18655,18656],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}",{"title":55,"searchDepth":110,"depth":110,"links":18658},[18659,18660,18661,18662,18663,18664,18670,18671,18672,18673,18674,18675],{"id":13800,"depth":113,"text":13801},{"id":4181,"depth":113,"text":4182},{"id":13966,"depth":113,"text":13967},{"id":14145,"depth":113,"text":14146},{"id":14640,"depth":113,"text":14641},{"id":15210,"depth":113,"text":15211,"children":18665},[18666,18667,18668,18669],{"id":15214,"depth":110,"text":15215},{"id":15595,"depth":110,"text":15596},{"id":15900,"depth":110,"text":15901},{"id":15961,"depth":110,"text":15962},{"id":16261,"depth":113,"text":16262},{"id":16634,"depth":113,"text":16635},{"id":16916,"depth":113,"text":16917},{"id":18170,"depth":113,"text":18171},{"id":18431,"depth":113,"text":18432},{"id":18490,"depth":113,"text":18491},"A comprehensive guide to implementing authentication in Nuxt 4. Learn about session management, JWT, OAuth, and securing your API routes with type-safe authentication.",{"type":12,"value":18678},[18679,18681,18683,18687,18703],[15,18680,541],{"id":540},[20,18682,13764],{},[20,18684,13767,18685,1007],{},[546,18686,13008],{},[561,18688,18689,18691,18693,18695,18697,18699,18701],{},[564,18690,13774],{},[564,18692,13777],{},[564,18694,13780],{},[564,18696,13783],{},[564,18698,13786],{},[564,18700,13789],{},[564,18702,13792],{},[20,18704,13795],{},[18706,8179,18707,18708,18709,18710,18711],"nuxt","auth","jwt","session","security","nuxt auth",{},"\u002Fblog\u002Fnuxt-auth-guide",{"title":13756,"description":18676},"blog\u002Fnuxt-auth-guide","rLYDq6kP6Vru4AFumujpbdQ0qG6tTIuebNlppQZilns",{"id":18718,"title":18719,"author":18720,"body":18721,"canonical":115,"categories":115,"date":20020,"description":20021,"excerpt":20022,"extension":118,"img":20050,"keywords":20051,"language":3510,"meta":20056,"navigation":129,"ogImage":115,"path":20057,"rating":275,"readTime":334,"seo":20058,"stem":20059,"tag":11602,"__hash__":20060},"blog\u002Fblog\u002Fnuxt-layer.md","Mastering Nuxt Layers: A Complete Guide to Scalable Nuxt 3 Architecture",{"name":8,"img":10,"website":535},{"type":12,"value":18722,"toc":19992},[18723,18727,18729,18740,18743,18754,18757,18764,18766,18770,18780,18783,18794,18797,18820,18826,18828,18832,18839,18843,18860,18866,18868,18872,18878,18889,18895,18897,18901,18905,18933,18936,18971,18974,18976,18980,19023,19026,19179,19181,19185,19189,19217,19220,19254,19257,19300,19302,19306,19313,19361,19364,19366,19370,19373,19382,19385,19388,19397,19400,19402,19406,19409,19475,19478,19480,19484,19487,19590,19593,19595,19599,19602,19645,19648,19650,19654,19657,19677,19680,19685,19687,19691,19741,19744,19746,19750,19753,19778,19821,19824,19826,19830,19833,19843,19849,19851,19855,19869,19876,19878,19882,19938,19941,19943,19947,19952,19963,19968,19976,19978,19980,19983,19986,19989],[15,18724,18726],{"id":18725},"mastering-nuxt-layers","Mastering Nuxt Layers",[31,18728,541],{"id":540},[20,18730,18731,18732,18735,18736,18739],{},"Nuxt 3 introduced many powerful features, but ",[546,18733,18734],{},"Nuxt Layers"," stand out as one of the most transformative. Layers allow you to build applications by ",[546,18737,18738],{},"composing reusable Nuxt projects",", instead of maintaining large monolithic codebases or copying boilerplate across repositories.",[20,18741,18742],{},"If you’ve ever wanted to:",[561,18744,18745,18748,18751],{},[564,18746,18747],{},"Reuse layouts, components, and pages across projects",[564,18749,18750],{},"Build a scalable SaaS architecture",[564,18752,18753],{},"Maintain a shared design system or feature set",[20,18755,18756],{},"Then Nuxt Layers are exactly what you’re looking for.",[20,18758,18759,18760,18763],{},"This guide is written as a ",[546,18761,18762],{},"long-form tutorial",". You can follow along step by step and apply everything directly to real projects.",[72,18765],{},[31,18767,18769],{"id":18768},"what-are-nuxt-layers","What Are Nuxt Layers?",[20,18771,13238,18772,18775,18776,18779],{},[546,18773,18774],{},"Nuxt Layer"," is a Nuxt application that is designed to be ",[546,18777,18778],{},"extended",", not deployed on its own.",[20,18781,18782],{},"In simple terms:",[561,18784,18785,18788,18791],{},[564,18786,18787],{},"A layer looks like a normal Nuxt app",[564,18789,18790],{},"Another Nuxt app can extend it",[564,18792,18793],{},"Nuxt merges everything together at runtime",[20,18795,18796],{},"Layers can contain:",[561,18798,18799,18802,18805,18808,18811,18814,18817],{},[564,18800,18801],{},"Pages",[564,18803,18804],{},"Components",[564,18806,18807],{},"Layouts",[564,18809,18810],{},"Composables",[564,18812,18813],{},"Assets",[564,18815,18816],{},"Configuration",[564,18818,18819],{},"Dependencies",[18821,18822,18823],"blockquote",{},[20,18824,18825],{},"Think of layers as inheritance for Nuxt applications.",[72,18827],{},[31,18829,18831],{"id":18830},"why-nuxt-layers-matter","Why Nuxt Layers Matter",[20,18833,18834,18835,18838],{},"Before layers, reuse often meant duplication. Layers introduce a ",[546,18836,18837],{},"first-class architectural pattern"," for sharing functionality.",[2459,18840,18842],{"id":18841},"benefits-of-using-layers","Benefits of Using Layers",[561,18844,18845,18848,18851,18854,18857],{},[564,18846,18847],{},"Reusable features across multiple apps",[564,18849,18850],{},"Cleaner separation of concerns",[564,18852,18853],{},"Faster project setup",[564,18855,18856],{},"Easier long-term maintenance",[564,18858,18859],{},"Ideal for SaaS platforms and white-label apps",[20,18861,18862,18863,2230],{},"Layers help teams move faster ",[546,18864,18865],{},"without sacrificing structure",[72,18867],{},[31,18869,18871],{"id":18870},"how-nuxt-layers-work","How Nuxt Layers Work",[20,18873,18874,18875,1007],{},"Nuxt merges layers ",[546,18876,18877],{},"from bottom to top",[2922,18879,18880,18883,18886],{},[564,18881,18882],{},"Base layers (design system, shared config)",[564,18884,18885],{},"Feature layers (auth, billing, dashboards)",[564,18887,18888],{},"Final application (branding, custom logic)",[20,18890,18891,18892,2230],{},"If multiple layers define the same file, ",[546,18893,18894],{},"the closest one wins",[72,18896],{},[31,18898,18900],{"id":18899},"creating-your-first-nuxt-layer","Creating Your First Nuxt Layer",[2459,18902,18904],{"id":18903},"step-1-create-the-layer","Step 1: Create the Layer",[47,18906,18908],{"className":758,"code":18907,"language":761,"meta":55,"style":55},"npx nuxi init layers\u002Fbase-ui\ncd layers\u002Fbase-ui\nnpm install\n",[39,18909,18910,18921,18927],{"__ignoreMap":55},[250,18911,18912,18914,18916,18918],{"class":252,"line":253},[250,18913,4200],{"class":774},[250,18915,3231],{"class":782},[250,18917,862],{"class":782},[250,18919,18920],{"class":782}," layers\u002Fbase-ui\n",[250,18922,18923,18925],{"class":252,"line":113},[250,18924,874],{"class":778},[250,18926,18920],{"class":782},[250,18928,18929,18931],{"class":252,"line":110},[250,18930,4226],{"class":774},[250,18932,896],{"class":782},[20,18934,18935],{},"This creates a standard Nuxt project structure:",[47,18937,18939],{"className":12725,"code":18938,"language":12727,"meta":55,"style":55},"layers\u002Fbase-ui\u002F\n├─ components\u002F\n├─ layouts\u002F\n├─ composables\u002F\n├─ assets\u002F\n├─ nuxt.config.ts\n",[39,18940,18941,18946,18951,18956,18961,18966],{"__ignoreMap":55},[250,18942,18943],{"class":252,"line":253},[250,18944,18945],{},"layers\u002Fbase-ui\u002F\n",[250,18947,18948],{"class":252,"line":113},[250,18949,18950],{},"├─ components\u002F\n",[250,18952,18953],{"class":252,"line":110},[250,18954,18955],{},"├─ layouts\u002F\n",[250,18957,18958],{"class":252,"line":269},[250,18959,18960],{},"├─ composables\u002F\n",[250,18962,18963],{"class":252,"line":275},[250,18964,18965],{},"├─ assets\u002F\n",[250,18967,18968],{"class":252,"line":281},[250,18969,18970],{},"├─ nuxt.config.ts\n",[20,18972,18973],{},"You will not run this project directly—it exists to be extended.",[72,18975],{},[2459,18977,18979],{"id":18978},"step-2-configure-the-layer","Step 2: Configure the Layer",[47,18981,18983],{"className":1010,"code":18982,"language":1012,"meta":55,"style":55},"\u002F\u002F layers\u002Fbase-ui\u002Fnuxt.config.ts\nexport default defineNuxtConfig({\n  components: true,\n  css: ['~\u002Fassets\u002Fmain.css']\n})\n",[39,18984,18985,18990,19000,19009,19019],{"__ignoreMap":55},[250,18986,18987],{"class":252,"line":253},[250,18988,18989],{"class":768},"\u002F\u002F layers\u002Fbase-ui\u002Fnuxt.config.ts\n",[250,18991,18992,18994,18996,18998],{"class":252,"line":113},[250,18993,1019],{"class":786},[250,18995,1022],{"class":786},[250,18997,1025],{"class":774},[250,18999,1028],{"class":912},[250,19001,19002,19005,19007],{"class":252,"line":110},[250,19003,19004],{"class":912},"  components: ",[250,19006,1066],{"class":778},[250,19008,927],{"class":912},[250,19010,19011,19014,19017],{"class":252,"line":269},[250,19012,19013],{"class":912},"  css: [",[250,19015,19016],{"class":782},"'~\u002Fassets\u002Fmain.css'",[250,19018,8695],{"class":912},[250,19020,19021],{"class":252,"line":275},[250,19022,474],{"class":912},[20,19024,19025],{},"Add a shared component:",[47,19027,19029],{"className":16925,"code":19028,"language":13747,"meta":55,"style":55},"\u003C!-- layers\u002Fbase-ui\u002Fcomponents\u002FBaseButton.vue -->\n\u003Ctemplate>\n  \u003Cbutton class=\"btn\">\n    \u003Cslot \u002F>\n  \u003C\u002Fbutton>\n\u003C\u002Ftemplate>\n\n\u003Cstyle scoped>\n.btn {\n  padding: 0.75rem 1.25rem;\n  border-radius: 0.5rem;\n  background: black;\n  color: white;\n}\n\u003C\u002Fstyle>\n",[39,19030,19031,19036,19044,19059,19071,19079,19087,19091,19102,19109,19129,19143,19155,19167,19171],{"__ignoreMap":55},[250,19032,19033],{"class":252,"line":253},[250,19034,19035],{"class":768},"\u003C!-- layers\u002Fbase-ui\u002Fcomponents\u002FBaseButton.vue -->\n",[250,19037,19038,19040,19042],{"class":252,"line":113},[250,19039,1962],{"class":912},[250,19041,16936],{"class":16935},[250,19043,13111],{"class":912},[250,19045,19046,19048,19050,19052,19054,19057],{"class":252,"line":110},[250,19047,16943],{"class":912},[250,19049,17129],{"class":16935},[250,19051,16949],{"class":774},[250,19053,1416],{"class":912},[250,19055,19056],{"class":782},"\"btn\"",[250,19058,13111],{"class":912},[250,19060,19061,19063,19066,19069],{"class":252,"line":269},[250,19062,16961],{"class":912},[250,19064,19065],{"class":16935},"slot",[250,19067,2287],{"class":19068},"s7hpK",[250,19070,13111],{"class":912},[250,19072,19073,19075,19077],{"class":252,"line":275},[250,19074,17267],{"class":912},[250,19076,17129],{"class":16935},[250,19078,13111],{"class":912},[250,19080,19081,19083,19085],{"class":252,"line":281},[250,19082,13209],{"class":912},[250,19084,16936],{"class":16935},[250,19086,13111],{"class":912},[250,19088,19089],{"class":252,"line":287},[250,19090,795],{"emptyLinePlaceholder":129},[250,19092,19093,19095,19097,19100],{"class":252,"line":293},[250,19094,1962],{"class":912},[250,19096,500],{"class":16935},[250,19098,19099],{"class":774}," scoped",[250,19101,13111],{"class":912},[250,19103,19104,19107],{"class":252,"line":299},[250,19105,19106],{"class":774},".btn",[250,19108,1118],{"class":912},[250,19110,19111,19114,19116,19119,19122,19125,19127],{"class":252,"line":132},[250,19112,19113],{"class":778},"  padding",[250,19115,921],{"class":912},[250,19117,19118],{"class":778},"0.75",[250,19120,19121],{"class":786},"rem",[250,19123,19124],{"class":778}," 1.25",[250,19126,19121],{"class":786},[250,19128,1379],{"class":912},[250,19130,19131,19134,19136,19139,19141],{"class":252,"line":310},[250,19132,19133],{"class":778},"  border-radius",[250,19135,921],{"class":912},[250,19137,19138],{"class":778},"0.5",[250,19140,19121],{"class":786},[250,19142,1379],{"class":912},[250,19144,19145,19148,19150,19153],{"class":252,"line":316},[250,19146,19147],{"class":778},"  background",[250,19149,921],{"class":912},[250,19151,19152],{"class":778},"black",[250,19154,1379],{"class":912},[250,19156,19157,19160,19162,19165],{"class":252,"line":322},[250,19158,19159],{"class":778},"  color",[250,19161,921],{"class":912},[250,19163,19164],{"class":778},"white",[250,19166,1379],{"class":912},[250,19168,19169],{"class":252,"line":328},[250,19170,991],{"class":912},[250,19172,19173,19175,19177],{"class":252,"line":334},[250,19174,13209],{"class":912},[250,19176,500],{"class":16935},[250,19178,13111],{"class":912},[72,19180],{},[31,19182,19184],{"id":19183},"using-a-layer-in-a-nuxt-app","Using a Layer in a Nuxt App",[2459,19186,19188],{"id":19187},"step-3-create-the-app","Step 3: Create the App",[47,19190,19192],{"className":758,"code":19191,"language":761,"meta":55,"style":55},"npx nuxi init apps\u002Fweb\ncd apps\u002Fweb\nnpm install\n",[39,19193,19194,19205,19211],{"__ignoreMap":55},[250,19195,19196,19198,19200,19202],{"class":252,"line":253},[250,19197,4200],{"class":774},[250,19199,3231],{"class":782},[250,19201,862],{"class":782},[250,19203,19204],{"class":782}," apps\u002Fweb\n",[250,19206,19207,19209],{"class":252,"line":113},[250,19208,874],{"class":778},[250,19210,19204],{"class":782},[250,19212,19213,19215],{"class":252,"line":110},[250,19214,4226],{"class":774},[250,19216,896],{"class":782},[20,19218,19219],{},"Extend the layer:",[47,19221,19223],{"className":1010,"code":19222,"language":1012,"meta":55,"style":55},"\u002F\u002F apps\u002Fweb\u002Fnuxt.config.ts\nexport default defineNuxtConfig({\n  extends: ['..\u002Flayers\u002Fbase-ui']\n})\n",[39,19224,19225,19230,19240,19250],{"__ignoreMap":55},[250,19226,19227],{"class":252,"line":253},[250,19228,19229],{"class":768},"\u002F\u002F apps\u002Fweb\u002Fnuxt.config.ts\n",[250,19231,19232,19234,19236,19238],{"class":252,"line":113},[250,19233,1019],{"class":786},[250,19235,1022],{"class":786},[250,19237,1025],{"class":774},[250,19239,1028],{"class":912},[250,19241,19242,19245,19248],{"class":252,"line":110},[250,19243,19244],{"class":912},"  extends: [",[250,19246,19247],{"class":782},"'..\u002Flayers\u002Fbase-ui'",[250,19249,8695],{"class":912},[250,19251,19252],{"class":252,"line":269},[250,19253,474],{"class":912},[20,19255,19256],{},"Now you can use the shared component without importing it:",[47,19258,19260],{"className":16925,"code":19259,"language":13747,"meta":55,"style":55},"\u003Ctemplate>\n  \u003CBaseButton>\n    Click Me\n  \u003C\u002FBaseButton>\n\u003C\u002Ftemplate>\n",[39,19261,19262,19270,19279,19284,19292],{"__ignoreMap":55},[250,19263,19264,19266,19268],{"class":252,"line":253},[250,19265,1962],{"class":912},[250,19267,16936],{"class":16935},[250,19269,13111],{"class":912},[250,19271,19272,19274,19277],{"class":252,"line":113},[250,19273,16943],{"class":912},[250,19275,19276],{"class":16935},"BaseButton",[250,19278,13111],{"class":912},[250,19280,19281],{"class":252,"line":110},[250,19282,19283],{"class":912},"    Click Me\n",[250,19285,19286,19288,19290],{"class":252,"line":269},[250,19287,17267],{"class":912},[250,19289,19276],{"class":16935},[250,19291,13111],{"class":912},[250,19293,19294,19296,19298],{"class":252,"line":275},[250,19295,13209],{"class":912},[250,19297,16936],{"class":16935},[250,19299,13111],{"class":912},[72,19301],{},[31,19303,19305],{"id":19304},"using-multiple-layers","Using Multiple Layers",[20,19307,19308,19309,19312],{},"You can extend ",[546,19310,19311],{},"multiple layers"," in a single app.",[47,19314,19316],{"className":1010,"code":19315,"language":1012,"meta":55,"style":55},"export default defineNuxtConfig({\n  extends: [\n    '..\u002Flayers\u002Fbase-ui',\n    '..\u002Flayers\u002Fauth',\n    '..\u002Flayers\u002Fdashboard'\n  ]\n})\n",[39,19317,19318,19328,19333,19340,19347,19352,19357],{"__ignoreMap":55},[250,19319,19320,19322,19324,19326],{"class":252,"line":253},[250,19321,1019],{"class":786},[250,19323,1022],{"class":786},[250,19325,1025],{"class":774},[250,19327,1028],{"class":912},[250,19329,19330],{"class":252,"line":113},[250,19331,19332],{"class":912},"  extends: [\n",[250,19334,19335,19338],{"class":252,"line":110},[250,19336,19337],{"class":782},"    '..\u002Flayers\u002Fbase-ui'",[250,19339,927],{"class":912},[250,19341,19342,19345],{"class":252,"line":269},[250,19343,19344],{"class":782},"    '..\u002Flayers\u002Fauth'",[250,19346,927],{"class":912},[250,19348,19349],{"class":252,"line":275},[250,19350,19351],{"class":782},"    '..\u002Flayers\u002Fdashboard'\n",[250,19353,19354],{"class":252,"line":281},[250,19355,19356],{"class":912},"  ]\n",[250,19358,19359],{"class":252,"line":287},[250,19360,474],{"class":912},[20,19362,19363],{},"Later layers override earlier ones.",[72,19365],{},[31,19367,19369],{"id":19368},"pages-inside-layers","Pages Inside Layers",[20,19371,19372],{},"Layers can define pages just like an app.",[47,19374,19376],{"className":12725,"code":19375,"language":12727,"meta":55,"style":55},"layers\u002Fauth\u002Fpages\u002Flogin.vue\n",[39,19377,19378],{"__ignoreMap":55},[250,19379,19380],{"class":252,"line":253},[250,19381,19375],{},[20,19383,19384],{},"That page automatically becomes available in the app.",[20,19386,19387],{},"To override it:",[47,19389,19391],{"className":12725,"code":19390,"language":12727,"meta":55,"style":55},"apps\u002Fweb\u002Fpages\u002Flogin.vue\n",[39,19392,19393],{"__ignoreMap":55},[250,19394,19395],{"class":252,"line":253},[250,19396,19390],{},[20,19398,19399],{},"Nuxt will use the app’s version instead.",[72,19401],{},[31,19403,19405],{"id":19404},"layouts-in-layers","Layouts in Layers",[20,19407,19408],{},"Shared layouts are ideal for base UI.",[47,19410,19412],{"className":16925,"code":19411,"language":13747,"meta":55,"style":55},"\u003C!-- layers\u002Fbase-ui\u002Flayouts\u002Fdefault.vue -->\n\u003Ctemplate>\n  \u003Cdiv>\n    \u003Cheader>Base Header\u003C\u002Fheader>\n    \u003Cslot \u002F>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n",[39,19413,19414,19419,19427,19435,19449,19459,19467],{"__ignoreMap":55},[250,19415,19416],{"class":252,"line":253},[250,19417,19418],{"class":768},"\u003C!-- layers\u002Fbase-ui\u002Flayouts\u002Fdefault.vue -->\n",[250,19420,19421,19423,19425],{"class":252,"line":113},[250,19422,1962],{"class":912},[250,19424,16936],{"class":16935},[250,19426,13111],{"class":912},[250,19428,19429,19431,19433],{"class":252,"line":110},[250,19430,16943],{"class":912},[250,19432,16946],{"class":16935},[250,19434,13111],{"class":912},[250,19436,19437,19439,19442,19445,19447],{"class":252,"line":269},[250,19438,16961],{"class":912},[250,19440,19441],{"class":16935},"header",[250,19443,19444],{"class":912},">Base Header\u003C\u002F",[250,19446,19441],{"class":16935},[250,19448,13111],{"class":912},[250,19450,19451,19453,19455,19457],{"class":252,"line":275},[250,19452,16961],{"class":912},[250,19454,19065],{"class":16935},[250,19456,2287],{"class":19068},[250,19458,13111],{"class":912},[250,19460,19461,19463,19465],{"class":252,"line":281},[250,19462,17267],{"class":912},[250,19464,16946],{"class":16935},[250,19466,13111],{"class":912},[250,19468,19469,19471,19473],{"class":252,"line":287},[250,19470,13209],{"class":912},[250,19472,16936],{"class":16935},[250,19474,13111],{"class":912},[20,19476,19477],{},"All extending apps inherit this layout automatically.",[72,19479],{},[31,19481,19483],{"id":19482},"composables-in-layers","Composables in Layers",[20,19485,19486],{},"Layers are perfect for shared logic.",[47,19488,19490],{"className":1010,"code":19489,"language":1012,"meta":55,"style":55},"\u002F\u002F layers\u002Fauth\u002Fcomposables\u002FuseAuth.ts\nexport const useAuth = () => {\n  const user = useState('user', () => null)\n\n  const login = async () => {\n    user.value = { name: 'Vantol' }\n  }\n\n  return { user, login }\n}\n",[39,19491,19492,19497,19513,19536,19540,19557,19571,19575,19579,19586],{"__ignoreMap":55},[250,19493,19494],{"class":252,"line":253},[250,19495,19496],{"class":768},"\u002F\u002F layers\u002Fauth\u002Fcomposables\u002FuseAuth.ts\n",[250,19498,19499,19501,19503,19505,19507,19509,19511],{"class":252,"line":113},[250,19500,1019],{"class":786},[250,19502,4438],{"class":786},[250,19504,18189],{"class":774},[250,19506,1187],{"class":786},[250,19508,2015],{"class":912},[250,19510,1115],{"class":786},[250,19512,1118],{"class":912},[250,19514,19515,19517,19519,19521,19523,19525,19528,19530,19532,19534],{"class":252,"line":110},[250,19516,1455],{"class":786},[250,19518,14943],{"class":778},[250,19520,1187],{"class":786},[250,19522,18208],{"class":774},[250,19524,1434],{"class":912},[250,19526,19527],{"class":782},"'user'",[250,19529,13157],{"class":912},[250,19531,1115],{"class":786},[250,19533,14546],{"class":778},[250,19535,4852],{"class":912},[250,19537,19538],{"class":252,"line":269},[250,19539,795],{"emptyLinePlaceholder":129},[250,19541,19542,19544,19547,19549,19551,19553,19555],{"class":252,"line":275},[250,19543,1455],{"class":786},[250,19545,19546],{"class":774}," login",[250,19548,1187],{"class":786},[250,19550,2012],{"class":786},[250,19552,2015],{"class":912},[250,19554,1115],{"class":786},[250,19556,1118],{"class":912},[250,19558,19559,19561,19563,19566,19569],{"class":252,"line":281},[250,19560,18390],{"class":912},[250,19562,1416],{"class":786},[250,19564,19565],{"class":912}," { name: ",[250,19567,19568],{"class":782},"'Vantol'",[250,19570,8690],{"class":912},[250,19572,19573],{"class":252,"line":287},[250,19574,986],{"class":912},[250,19576,19577],{"class":252,"line":293},[250,19578,795],{"emptyLinePlaceholder":129},[250,19580,19581,19583],{"class":252,"line":299},[250,19582,1123],{"class":786},[250,19584,19585],{"class":912}," { user, login }\n",[250,19587,19588],{"class":252,"line":132},[250,19589,991],{"class":912},[20,19591,19592],{},"This composable is globally available.",[72,19594],{},[31,19596,19598],{"id":19597},"runtime-config-and-environment-variables","Runtime Config and Environment Variables",[20,19600,19601],{},"Layers can define runtime configuration:",[47,19603,19605],{"className":1010,"code":19604,"language":1012,"meta":55,"style":55},"export default defineNuxtConfig({\n  runtimeConfig: {\n    public: {\n      appName: 'Base App'\n    }\n  }\n})\n",[39,19606,19607,19617,19621,19625,19633,19637,19641],{"__ignoreMap":55},[250,19608,19609,19611,19613,19615],{"class":252,"line":253},[250,19610,1019],{"class":786},[250,19612,1022],{"class":786},[250,19614,1025],{"class":774},[250,19616,1028],{"class":912},[250,19618,19619],{"class":252,"line":113},[250,19620,8929],{"class":912},[250,19622,19623],{"class":252,"line":110},[250,19624,8934],{"class":912},[250,19626,19627,19630],{"class":252,"line":269},[250,19628,19629],{"class":912},"      appName: ",[250,19631,19632],{"class":782},"'Base App'\n",[250,19634,19635],{"class":252,"line":275},[250,19636,3684],{"class":912},[250,19638,19639],{"class":252,"line":281},[250,19640,986],{"class":912},[250,19642,19643],{"class":252,"line":287},[250,19644,474],{"class":912},[20,19646,19647],{},"Apps can override these values safely.",[72,19649],{},[31,19651,19653],{"id":19652},"dependencies-in-layers","Dependencies in Layers",[20,19655,19656],{},"Layers may include their own dependencies:",[47,19658,19660],{"className":758,"code":19659,"language":761,"meta":55,"style":55},"cd layers\u002Fbase-ui\nnpm install tailwindcss\n",[39,19661,19662,19668],{"__ignoreMap":55},[250,19663,19664,19666],{"class":252,"line":253},[250,19665,874],{"class":778},[250,19667,18920],{"class":782},[250,19669,19670,19672,19674],{"class":252,"line":113},[250,19671,4226],{"class":774},[250,19673,808],{"class":782},[250,19675,19676],{"class":782}," tailwindcss\n",[20,19678,19679],{},"Dependencies are merged into the final build.",[18821,19681,19682],{},[20,19683,19684],{},"Be mindful—shared dependencies affect every extending app.",[72,19686],{},[31,19688,19690],{"id":19689},"recommended-monorepo-structure","Recommended Monorepo Structure",[47,19692,19694],{"className":12725,"code":19693,"language":12727,"meta":55,"style":55},".\n├─ apps\u002F\n│  ├─ web\n│  └─ admin\n├─ layers\u002F\n│  ├─ base-ui\n│  ├─ auth\n│  ├─ billing\n│  └─ dashboard\n",[39,19695,19696,19701,19706,19711,19716,19721,19726,19731,19736],{"__ignoreMap":55},[250,19697,19698],{"class":252,"line":253},[250,19699,19700],{},".\n",[250,19702,19703],{"class":252,"line":113},[250,19704,19705],{},"├─ apps\u002F\n",[250,19707,19708],{"class":252,"line":110},[250,19709,19710],{},"│  ├─ web\n",[250,19712,19713],{"class":252,"line":269},[250,19714,19715],{},"│  └─ admin\n",[250,19717,19718],{"class":252,"line":275},[250,19719,19720],{},"├─ layers\u002F\n",[250,19722,19723],{"class":252,"line":281},[250,19724,19725],{},"│  ├─ base-ui\n",[250,19727,19728],{"class":252,"line":287},[250,19729,19730],{},"│  ├─ auth\n",[250,19732,19733],{"class":252,"line":293},[250,19734,19735],{},"│  ├─ billing\n",[250,19737,19738],{"class":252,"line":299},[250,19739,19740],{},"│  └─ dashboard\n",[20,19742,19743],{},"This structure works well with pnpm workspaces, Turborepo, or Nx.",[72,19745],{},[31,19747,19749],{"id":19748},"real-world-example-saas-starter","Real-World Example: SaaS Starter",[20,19751,19752],{},"A common production setup:",[561,19754,19755,19761,19766,19772],{},[564,19756,19757,19760],{},[39,19758,19759],{},"base-ui"," – Design system",[564,19762,19763,19765],{},[39,19764,18707],{}," – Authentication and guards",[564,19767,19768,19771],{},[39,19769,19770],{},"billing"," – Stripe and subscriptions",[564,19773,19774,19777],{},[39,19775,19776],{},"dashboard"," – Core product UI",[47,19779,19781],{"className":1010,"code":19780,"language":1012,"meta":55,"style":55},"extends: [\n  '..\u002Flayers\u002Fbase-ui',\n  '..\u002Flayers\u002Fauth',\n  '..\u002Flayers\u002Fbilling',\n  '..\u002Flayers\u002Fdashboard'\n]\n",[39,19782,19783,19791,19798,19805,19812,19817],{"__ignoreMap":55},[250,19784,19785,19788],{"class":252,"line":253},[250,19786,19787],{"class":774},"extends",[250,19789,19790],{"class":912},": [\n",[250,19792,19793,19796],{"class":252,"line":113},[250,19794,19795],{"class":782},"  '..\u002Flayers\u002Fbase-ui'",[250,19797,927],{"class":912},[250,19799,19800,19803],{"class":252,"line":110},[250,19801,19802],{"class":782},"  '..\u002Flayers\u002Fauth'",[250,19804,927],{"class":912},[250,19806,19807,19810],{"class":252,"line":269},[250,19808,19809],{"class":782},"  '..\u002Flayers\u002Fbilling'",[250,19811,927],{"class":912},[250,19813,19814],{"class":252,"line":275},[250,19815,19816],{"class":782},"  '..\u002Flayers\u002Fdashboard'\n",[250,19818,19819],{"class":252,"line":281},[250,19820,8695],{"class":912},[20,19822,19823],{},"New apps can be launched in days instead of weeks.",[72,19825],{},[31,19827,19829],{"id":19828},"overriding-behavior-safely","Overriding Behavior Safely",[20,19831,19832],{},"You can override:",[561,19834,19835,19837,19839,19841],{},[564,19836,18804],{},[564,19838,18801],{},[564,19840,18807],{},[564,19842,18810],{},[20,19844,19845,19846,2230],{},"Nuxt resolves conflicts using ",[546,19847,19848],{},"closest-first resolution",[72,19850],{},[31,19852,19854],{"id":19853},"common-pitfalls","Common Pitfalls",[561,19856,19857,19860,19863,19866],{},[564,19858,19859],{},"Putting app-specific logic in base layers",[564,19861,19862],{},"Creating tight coupling between layers",[564,19864,19865],{},"Ignoring layer order",[564,19867,19868],{},"Treating layers like plugins",[20,19870,19871,19872,19875],{},"Design layers as ",[546,19873,19874],{},"products",", not shortcuts.",[72,19877],{},[31,19879,19881],{"id":19880},"layers-vs-nuxt-modules","Layers vs Nuxt Modules",[645,19883,19884,19897],{},[648,19885,19886],{},[651,19887,19888,19891,19894],{},[654,19889,19890],{},"Feature",[654,19892,19893],{},"Layers",[654,19895,19896],{},"Modules",[666,19898,19899,19910,19919,19928],{},[651,19900,19901,19904,19907],{},[671,19902,19903],{},"Pages & layouts",[671,19905,19906],{},"Yes",[671,19908,19909],{},"No",[651,19911,19912,19915,19917],{},[671,19913,19914],{},"File-system reuse",[671,19916,19906],{},[671,19918,19909],{},[651,19920,19921,19924,19926],{},[671,19922,19923],{},"App architecture",[671,19925,19906],{},[671,19927,19909],{},[651,19929,19930,19933,19936],{},[671,19931,19932],{},"Runtime hooks",[671,19934,19935],{},"Limited",[671,19937,19906],{},[20,19939,19940],{},"They solve different problems and often work best together.",[72,19942],{},[31,19944,19946],{"id":19945},"when-you-should-and-shouldnt-use-layers","When You Should (and Shouldn’t) Use Layers",[20,19948,19949],{},[546,19950,19951],{},"Use layers when:",[561,19953,19954,19957,19960],{},[564,19955,19956],{},"You manage multiple Nuxt apps",[564,19958,19959],{},"You want shared features or UI",[564,19961,19962],{},"You’re building a SaaS platform",[20,19964,19965],{},[546,19966,19967],{},"Avoid layers when:",[561,19969,19970,19973],{},[564,19971,19972],{},"You have a single small app",[564,19974,19975],{},"There is little to no shared logic",[72,19977],{},[31,19979,3352],{"id":3351},[20,19981,19982],{},"Nuxt Layers unlock a new level of scalability and maintainability for Nuxt 3 applications. When designed intentionally, they allow teams to move faster, share more, and maintain cleaner architectures over time.",[20,19984,19985],{},"If you’re serious about building scalable Nuxt applications, mastering layers is no longer optional—it’s essential.",[20,19987,19988],{},"Happy building 🚀",[500,19990,19991],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .s7hpK, html code.shiki .s7hpK{--shiki-default:#B31D28;--shiki-default-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic}",{"title":55,"searchDepth":110,"depth":110,"links":19993},[19994,19995,19996,19999,20000,20004,20007,20008,20009,20010,20011,20012,20013,20014,20015,20016,20017,20018,20019],{"id":540,"depth":113,"text":541},{"id":18768,"depth":113,"text":18769},{"id":18830,"depth":113,"text":18831,"children":19997},[19998],{"id":18841,"depth":110,"text":18842},{"id":18870,"depth":113,"text":18871},{"id":18899,"depth":113,"text":18900,"children":20001},[20002,20003],{"id":18903,"depth":110,"text":18904},{"id":18978,"depth":110,"text":18979},{"id":19183,"depth":113,"text":19184,"children":20005},[20006],{"id":19187,"depth":110,"text":19188},{"id":19304,"depth":113,"text":19305},{"id":19368,"depth":113,"text":19369},{"id":19404,"depth":113,"text":19405},{"id":19482,"depth":113,"text":19483},{"id":19597,"depth":113,"text":19598},{"id":19652,"depth":113,"text":19653},{"id":19689,"depth":113,"text":19690},{"id":19748,"depth":113,"text":19749},{"id":19828,"depth":113,"text":19829},{"id":19853,"depth":113,"text":19854},{"id":19880,"depth":113,"text":19881},{"id":19945,"depth":113,"text":19946},{"id":3351,"depth":113,"text":3352},"2026-01-06","A comprehensive, tutorial-style deep dive into Nuxt Layers—learn how to design, build, and scale reusable Nuxt 3 applications using layers.",{"type":12,"value":20023},[20024,20026,20028,20034,20036,20044,20046],[15,20025,18726],{"id":18725},[31,20027,541],{"id":540},[20,20029,18731,20030,18735,20032,18739],{},[546,20031,18734],{},[546,20033,18738],{},[20,20035,18742],{},[561,20037,20038,20040,20042],{},[564,20039,18747],{},[564,20041,18750],{},[564,20043,18753],{},[20,20045,18756],{},[20,20047,18759,20048,18763],{},[546,20049,18762],{},"https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1517433456452-f9633a875f6f",[18706,20052,20053,13747,20054,20055],"nuxt layers","nuxt 3","architecture","monorepo",{},"\u002Fblog\u002Fnuxt-layer",{"title":18719,"description":20021},"blog\u002Fnuxt-layer","9KWnMT6x33L-CQzC53dSqzURulcxL3MpwoC-Y4Vn_yY",{"id":20062,"title":20063,"author":20064,"body":20065,"canonical":115,"categories":115,"date":20144,"description":20145,"excerpt":20146,"extension":118,"img":119,"keywords":20152,"language":127,"meta":20153,"navigation":129,"ogImage":115,"path":20154,"rating":269,"readTime":132,"seo":20155,"stem":20156,"tag":125,"__hash__":20157},"blog\u002Fblog\u002Fnuxt3-lets-talk.md","Nuxt3-RC 10 Lets Talk",{"name":8,"website":9,"img":10},{"type":12,"value":20066,"toc":20135},[20067,20071,20074,20078,20084,20088,20095,20099,20106,20109,20118,20122,20125,20129,20132],[15,20068,20070],{"id":20069},"nuxt3-rc","Nuxt3 RC",[20,20072,20073],{},"Since its release last year October, Nuxt 3 Beta to RC10; Nuxt developers and maintainers have place a lot of\nemphasis on the performance first to be blazing fast with impressive features suchas auto imports (the best feature to date)\nand not coming to nearly a year the stable version should see the long await Hybrid Generation which will allow developers to\ndevelop web application to exisit on both a static and server side rendered environment. So lets look at RC10 and see if we can make heads or tails of this release.",[15,20075,20077],{"id":20076},"features-at-a-glance","Features at a Glance",[47,20079,20082],{"className":20080,"code":20081,"language":52},[50],"Nuxt 3 Release Candidate 10 is out ✨\n\n🚀 Full Static Generation\n⚡️ Link Prefetching\n💨 Inlined Critical Styles\n0️⃣ Experimental Zero-Client-JS Mode\n🪡 55+ enhancements and bug fixes\n",[39,20083,20081],{"__ignoreMap":55},[31,20085,20087],{"id":20086},"full-static-generation","Full Static Generation",[20,20089,20090,20091,20094],{},"Static rendering is basically files being pre-rendered using ",[39,20092,20093],{},"nuxt generate"," which allows for Nuxt to be deployed to any static\nhosting without a server API, but Nuxt3 takes it to whole other level based on the update changes in RC10 - however it does not give\nus the long await hybrid or incremental generated pages so its a start (hopefully RC12).",[31,20096,20098],{"id":20097},"link-prefetching","Link Prefetching",[20,20100,20101,20102],{},"This feature ported from Nuxt 2, is automatically prefetching the next pages when a ",[20103,20104,20105],"nuxt-link",{}," is in the viewport.",[20,20107,20108],{},"This feature is integrated with vue-router to prefetch components of the next route and also payload extraction to prefetch the payload of the next pages ahead of time! You can also hook into link:prefetch to do more prefetches.",[2459,20110,20112,20113],{"id":20111},"so-much-more-have-read-here","so much more have ",[203,20114,20117],{"href":20115,"rel":20116},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fframework\u002Fdiscussions\u002F7513",[207],"read here",[31,20119,20121],{"id":20120},"whats-next","What's Next?",[20,20123,20124],{},"Your guess is as good as mine the stable version was promised from Summer and summer is well summer. It seems the best bet\nwould be for Nuxt 3 to come out in October the same time the beta was announced but I am just guessing.",[31,20126,20128],{"id":20127},"how-to-get-started","How to get started",[20,20130,20131],{},"Well the Nuxt3 RC documentation is your best bet for all your nuxt goodness. I will be starting a deep in Nuxt soon be update.",[20,20133,20134],{},"Peace......",{"title":55,"searchDepth":110,"depth":110,"links":20136},[20137,20138,20142,20143],{"id":20086,"depth":113,"text":20087},{"id":20097,"depth":113,"text":20098,"children":20139},[20140],{"id":20111,"depth":110,"text":20141},"so much more have read here",{"id":20120,"depth":113,"text":20121},{"id":20127,"depth":113,"text":20128},"2022-08-10","Nuxt3 RC is now 10 releases old but how does it stack up with past releases.",{"type":12,"value":20147},[20148,20150],[15,20149,20070],{"id":20069},[20,20151,20073],{},[121,122,123,124,125,126],{},"\u002Fblog\u002Fnuxt3-lets-talk",{"title":20063,"description":20145},"blog\u002Fnuxt3-lets-talk","hmAlO8zxdUYcQ-mukkrvk4i94POdgHtqaGp1nuEMpDQ",{"id":20159,"title":20160,"author":20161,"body":20162,"canonical":115,"categories":115,"date":20884,"description":20885,"excerpt":20886,"extension":118,"img":20050,"keywords":20902,"language":3510,"meta":20905,"navigation":129,"ogImage":115,"path":20906,"rating":275,"readTime":132,"seo":20907,"stem":20908,"tag":3515,"__hash__":20909},"blog\u002Fblog\u002Freact-native-vs-dious.md","Dioxus vs React Native: A Modern Cross-Platform UI Comparison",{"name":8,"img":10,"website":535},{"type":12,"value":20163,"toc":20850},[20164,20166,20175,20184,20186,20190,20269,20271,20275,20277,20283,20297,20323,20326,20329,20336,20347,20368,20371,20377,20379,20383,20387,20390,20404,20407,20418,20422,20425,20433,20436,20444,20447,20449,20453,20457,20460,20493,20496,20507,20510,20515,20519,20522,20531,20533,20541,20543,20551,20553,20555,20558,20563,20571,20574,20585,20588,20591,20599,20602,20610,20612,20616,20620,20634,20647,20653,20657,20671,20674,20685,20689,20692,20694,20696,20699,20702,20716,20722,20725,20728,20739,20742,20744,20748,20751,20762,20765,20776,20779,20781,20785,20791,20805,20809,20813,20827,20829,20831,20838,20841,20844,20847],[15,20165,541],{"id":540},[20,20167,20168,20169,20171,20172,20174],{},"Cross-platform development has become the default approach for building modern applications. Among the many frameworks available, ",[546,20170,3566],{}," has long been the industry standard. However, newer frameworks like ",[546,20173,3529],{}," are challenging that position by offering a Rust-first, high-performance alternative.",[20,20176,20177,20178,20180,20181,20183],{},"In this post, we’ll compare ",[546,20179,3558],{}," and ",[546,20182,3566],{}," across architecture, performance, developer experience, tooling, and ecosystem to help you decide which framework fits your next project.",[15,20185,748],{"id":747},[31,20187,20189],{"id":20188},"high-level-overview","High-Level Overview",[645,20191,20192,20202],{},[648,20193,20194],{},[651,20195,20196,20198,20200],{},[654,20197,19890],{},[654,20199,3529],{},[654,20201,3566],{},[666,20203,20204,20214,20225,20236,20247,20258],{},[651,20205,20206,20209,20211],{},[671,20207,20208],{},"Language",[671,20210,3533],{},[671,20212,20213],{},"JavaScript \u002F TypeScript",[651,20215,20216,20219,20222],{},[671,20217,20218],{},"UI Model",[671,20220,20221],{},"Declarative (RSX)",[671,20223,20224],{},"Declarative (JSX)",[651,20226,20227,20230,20233],{},[671,20228,20229],{},"Platforms",[671,20231,20232],{},"Web, Desktop, Mobile",[671,20234,20235],{},"Mobile (iOS, Android)",[651,20237,20238,20241,20244],{},[671,20239,20240],{},"Rendering",[671,20242,20243],{},"Native + WASM",[671,20245,20246],{},"Native via bridge",[651,20248,20249,20252,20255],{},[671,20250,20251],{},"Backend Integration",[671,20253,20254],{},"Native Rust fullstack",[671,20256,20257],{},"Separate backend",[651,20259,20260,20263,20266],{},[671,20261,20262],{},"Performance Focus",[671,20264,20265],{},"Compile-time + memory safety",[671,20267,20268],{},"Runtime optimizations",[72,20270],{},[31,20272,20274],{"id":20273},"language-type-safety","Language & Type Safety",[2459,20276,3558],{"id":4070},[20,20278,20279,20280,20282],{},"Dioxus is built entirely in ",[546,20281,3533],{},", giving developers:",[561,20284,20285,20288,20291,20294],{},[564,20286,20287],{},"Strong compile-time guarantees",[564,20289,20290],{},"Memory safety without garbage collection",[564,20292,20293],{},"Fearless refactoring",[564,20295,20296],{},"Fewer runtime crashes",[47,20298,20300],{"className":3660,"code":20299,"language":3662,"meta":55,"style":55},"fn App() -> Element {\n    rsx! {\n        div { \"Hello from Rust!\" }\n    }\n}\n",[39,20301,20302,20306,20310,20315,20319],{"__ignoreMap":55},[250,20303,20304],{"class":252,"line":253},[250,20305,3669],{},[250,20307,20308],{"class":252,"line":113},[250,20309,3674],{},[250,20311,20312],{"class":252,"line":110},[250,20313,20314],{},"        div { \"Hello from Rust!\" }\n",[250,20316,20317],{"class":252,"line":269},[250,20318,3684],{},[250,20320,20321],{"class":252,"line":275},[250,20322,991],{},[20,20324,20325],{},"Rust errors are caught at compile time, reducing runtime failures common in large JavaScript codebases.\n::",[2459,20327,3566],{"id":20328},"react-native",[20,20330,20331,20332,20335],{},"React Native relies on ",[546,20333,20334],{},"JavaScript or TypeScript",", which offers:",[561,20337,20338,20341,20344],{},[564,20339,20340],{},"Faster onboarding",[564,20342,20343],{},"Massive community knowledge",[564,20345,20346],{},"Runtime flexibility",[47,20348,20352],{"className":20349,"code":20350,"language":20351,"meta":55,"style":55},"language-tsx shiki shiki-themes github-light github-dark","export default function App() {\n  return \u003CText>Hello from React Native\u003C\u002FText>;\n}\n","tsx",[39,20353,20354,20359,20364],{"__ignoreMap":55},[250,20355,20356],{"class":252,"line":253},[250,20357,20358],{},"export default function App() {\n",[250,20360,20361],{"class":252,"line":113},[250,20362,20363],{},"  return \u003CText>Hello from React Native\u003C\u002FText>;\n",[250,20365,20366],{"class":252,"line":110},[250,20367,991],{},[20,20369,20370],{},"Despite TypeScript, many errors in React Native still surface at runtime, especially around async state and native bridges.\n::",[20,20372,20373,20376],{},[546,20374,20375],{},"Verdict:","\nDioxus wins on safety and correctness. React Native wins on approachability and familiarity.",[72,20378],{},[31,20380,20382],{"id":20381},"performance-architecture","Performance & Architecture",[2459,20384,20386],{"id":20385},"dioxus-performance-model","Dioxus Performance Model",[20,20388,20389],{},"Dioxus benefits from:",[561,20391,20392,20395,20398,20401],{},[564,20393,20394],{},"Zero-cost abstractions",[564,20396,20397],{},"No JS bridge",[564,20399,20400],{},"Direct native execution",[564,20402,20403],{},"WASM for the web",[20,20405,20406],{},"This leads to:",[561,20408,20409,20412,20415],{},[564,20410,20411],{},"Faster startup times",[564,20413,20414],{},"Lower memory usage",[564,20416,20417],{},"Predictable performance",[2459,20419,20421],{"id":20420},"react-native-performance-model","React Native Performance Model",[20,20423,20424],{},"React Native uses:",[561,20426,20427,20430],{},[564,20428,20429],{},"A JS runtime",[564,20431,20432],{},"A native bridge (even with the new architecture)",[20,20434,20435],{},"While performance has improved significantly, complex UIs can still suffer from:",[561,20437,20438,20441],{},[564,20439,20440],{},"Bridge overhead",[564,20442,20443],{},"Thread synchronization issues",[20,20445,20446],{},"If your app is performance-critical (IoT dashboards, embedded systems, real-time UIs), Dioxus has a structural advantage.\n::",[72,20448],{},[31,20450,20452],{"id":20451},"ui-development-experience","UI Development Experience",[2459,20454,20456],{"id":20455},"dioxus-rsx","Dioxus (RSX)",[20,20458,20459],{},"RSX feels similar to JSX but enforces correctness:",[47,20461,20463],{"className":3660,"code":20462,"language":3662,"meta":55,"style":55},"rsx! {\n    button {\n        onclick: move |_| count += 1,\n        \"Increment\"\n    }\n}\n",[39,20464,20465,20470,20475,20480,20485,20489],{"__ignoreMap":55},[250,20466,20467],{"class":252,"line":253},[250,20468,20469],{},"rsx! {\n",[250,20471,20472],{"class":252,"line":113},[250,20473,20474],{},"    button {\n",[250,20476,20477],{"class":252,"line":110},[250,20478,20479],{},"        onclick: move |_| count += 1,\n",[250,20481,20482],{"class":252,"line":269},[250,20483,20484],{},"        \"Increment\"\n",[250,20486,20487],{"class":252,"line":275},[250,20488,3684],{},[250,20490,20491],{"class":252,"line":281},[250,20492,991],{},[20,20494,20495],{},"Pros:",[561,20497,20498,20501,20504],{},[564,20499,20500],{},"Compile-time UI validation",[564,20502,20503],{},"No undefined props",[564,20505,20506],{},"Cleaner refactors",[20,20508,20509],{},"Cons:",[561,20511,20512],{},[564,20513,20514],{},"Rust macros have a learning curve",[2459,20516,20518],{"id":20517},"react-native-jsx","React Native (JSX)",[20,20520,20521],{},"JSX is flexible and expressive:",[47,20523,20525],{"className":20349,"code":20524,"language":20351,"meta":55,"style":55},"\u003CButton title=\"Increment\" onPress={() => setCount(c => c + 1)} \u002F>\n",[39,20526,20527],{"__ignoreMap":55},[250,20528,20529],{"class":252,"line":253},[250,20530,20524],{},[20,20532,20495],{},[561,20534,20535,20538],{},[564,20536,20537],{},"Huge component ecosystem",[564,20539,20540],{},"Familiar React mental model",[20,20542,20509],{},[561,20544,20545,20548],{},[564,20546,20547],{},"Runtime UI errors",[564,20549,20550],{},"Props misuse is easy",[72,20552],{},[31,20554,3710],{"id":3709},[2459,20556,3558],{"id":20557},"dioxus-1",[20,20559,3647,20560,20562],{},[546,20561,3716],{}," and hooks that integrate deeply with Rust’s ownership model:",[47,20564,20565],{"className":3660,"code":3724,"language":3662,"meta":55,"style":55},[39,20566,20567],{"__ignoreMap":55},[250,20568,20569],{"class":252,"line":253},[250,20570,3724],{},[20,20572,20573],{},"Benefits:",[561,20575,20576,20579,20582],{},[564,20577,20578],{},"No stale closures",[564,20580,20581],{},"Predictable updates",[564,20583,20584],{},"Compile-time guarantees",[2459,20586,3566],{"id":20587},"react-native-1",[20,20589,20590],{},"React Native relies on:",[561,20592,20593,20596],{},[564,20594,20595],{},"React hooks",[564,20597,20598],{},"External libraries (Redux, Zustand, Recoil)",[20,20600,20601],{},"This flexibility is powerful—but can lead to:",[561,20603,20604,20607],{},[564,20605,20606],{},"State sprawl",[564,20608,20609],{},"Hard-to-debug race conditions",[72,20611],{},[31,20613,20615],{"id":20614},"tooling-developer-experience","Tooling & Developer Experience",[2459,20617,20619],{"id":20618},"dioxus-tooling","Dioxus Tooling",[561,20621,20622,20625,20628,20631],{},[564,20623,20624],{},"Built-in CLI",[564,20626,20627],{},"Hot reload",[564,20629,20630],{},"Unified build pipeline",[564,20632,20633],{},"Rust analyzer integration",[47,20635,20637],{"className":758,"code":20636,"language":761,"meta":55,"style":55},"dx serve\n",[39,20638,20639],{"__ignoreMap":55},[250,20640,20641,20644],{"class":252,"line":253},[250,20642,20643],{"class":774},"dx",[250,20645,20646],{"class":782}," serve\n",[20,20648,20649,20650,2230],{},"Everything—from UI to backend—lives in ",[546,20651,20652],{},"one ecosystem",[2459,20654,20656],{"id":20655},"react-native-tooling","React Native Tooling",[561,20658,20659,20662,20665,20668],{},[564,20660,20661],{},"Metro bundler",[564,20663,20664],{},"Native SDKs",[564,20666,20667],{},"Xcode & Android Studio",[564,20669,20670],{},"Many third-party tools",[20,20672,20673],{},"Powerful, but:",[561,20675,20676,20679,20682],{},[564,20677,20678],{},"Complex setup",[564,20680,20681],{},"Platform-specific bugs",[564,20683,20684],{},"Steeper maintenance at scale",[2459,20686,20688],{"id":20687},"tooling-summary","Tooling Summary",[20,20690,20691],{},"Dioxus prioritizes simplicity and cohesion.\nReact Native prioritizes flexibility and scale.\n::",[72,20693],{},[31,20695,3955],{"id":3954},[2459,20697,3558],{"id":20698},"dioxus-2",[20,20700,20701],{},"Dioxus shines here.",[561,20703,20704,20707,20710,20713],{},[564,20705,20706],{},"Frontend and backend both in Rust",[564,20708,20709],{},"Shared types",[564,20711,20712],{},"Server functions",[564,20714,20715],{},"SSR support",[20,20717,20718,20719,2230],{},"This makes it ideal for ",[546,20720,20721],{},"end-to-end Rust teams",[2459,20723,3566],{"id":20724},"react-native-2",[20,20726,20727],{},"React Native typically requires:",[561,20729,20730,20733,20736],{},[564,20731,20732],{},"Separate backend stack",[564,20734,20735],{},"API contracts",[564,20737,20738],{},"Data validation duplication",[20,20740,20741],{},"Still powerful—but fragmented.",[72,20743],{},[31,20745,20747],{"id":20746},"ecosystem-community","Ecosystem & Community",[2459,20749,3566],{"id":20750},"react-native-3",[561,20752,20753,20756,20759],{},[564,20754,20755],{},"Massive ecosystem",[564,20757,20758],{},"Thousands of libraries",[564,20760,20761],{},"Long-term industry support",[2459,20763,3558],{"id":20764},"dioxus-3",[561,20766,20767,20770,20773],{},[564,20768,20769],{},"Smaller but growing ecosystem",[564,20771,20772],{},"Strong Rust community backing",[564,20774,20775],{},"Rapid iteration",[20,20777,20778],{},"Dioxus is younger, but its pace of development is significantly faster than React Native’s early years.\n::",[72,20780],{},[31,20782,20784],{"id":20783},"when-to-choose-dioxus","When to Choose Dioxus",[20,20786,20787,20788,20790],{},"Choose ",[546,20789,3558],{}," if:",[561,20792,20793,20796,20799,20802],{},[564,20794,20795],{},"You value performance and safety",[564,20797,20798],{},"Your team knows Rust",[564,20800,20801],{},"You want a unified fullstack solution",[564,20803,20804],{},"You target web + desktop + mobile",[31,20806,20808],{"id":20807},"when-to-choose-react-native","When to Choose React Native",[20,20810,20787,20811,20790],{},[546,20812,3566],{},[561,20814,20815,20818,20821,20824],{},[564,20816,20817],{},"You need mature mobile tooling",[564,20819,20820],{},"You rely on third-party native modules",[564,20822,20823],{},"Your team is React-centric",[564,20825,20826],{},"Time-to-market is critical",[72,20828],{},[15,20830,3352],{"id":3351},[20,20832,20833,20834,20837],{},"React Native remains a dominant force in cross-platform mobile development, backed by a massive ecosystem and years of production usage. However, ",[546,20835,20836],{},"Dioxus 0.7 introduces a compelling alternative","—one built on performance, safety, and architectural simplicity.",[20,20839,20840],{},"For teams willing to invest in Rust, Dioxus offers a future-proof approach to building fast, reliable, cross-platform applications with fewer runtime surprises.",[20,20842,20843],{},"The choice isn’t about which framework is “better”—it’s about which philosophy aligns with your product and team.",[20,20845,20846],{},"And in 2026, Dioxus is no longer experimental—it’s a serious contender. 🚀",[500,20848,20849],{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}",{"title":55,"searchDepth":110,"depth":110,"links":20851},[20852,20853,20857,20861,20865,20869,20874,20878,20882,20883],{"id":20188,"depth":113,"text":20189},{"id":20273,"depth":113,"text":20274,"children":20854},[20855,20856],{"id":4070,"depth":110,"text":3558},{"id":20328,"depth":110,"text":3566},{"id":20381,"depth":113,"text":20382,"children":20858},[20859,20860],{"id":20385,"depth":110,"text":20386},{"id":20420,"depth":110,"text":20421},{"id":20451,"depth":113,"text":20452,"children":20862},[20863,20864],{"id":20455,"depth":110,"text":20456},{"id":20517,"depth":110,"text":20518},{"id":3709,"depth":113,"text":3710,"children":20866},[20867,20868],{"id":20557,"depth":110,"text":3558},{"id":20587,"depth":110,"text":3566},{"id":20614,"depth":113,"text":20615,"children":20870},[20871,20872,20873],{"id":20618,"depth":110,"text":20619},{"id":20655,"depth":110,"text":20656},{"id":20687,"depth":110,"text":20688},{"id":3954,"depth":113,"text":3955,"children":20875},[20876,20877],{"id":20698,"depth":110,"text":3558},{"id":20724,"depth":110,"text":3566},{"id":20746,"depth":113,"text":20747,"children":20879},[20880,20881],{"id":20750,"depth":110,"text":3566},{"id":20764,"depth":110,"text":3558},{"id":20783,"depth":113,"text":20784},{"id":20807,"depth":113,"text":20808},"2026-01-11","A deep comparison of Dioxus 0.7 and React Native, exploring performance, developer experience, tooling, and when to choose each framework.",{"type":12,"value":20887},[20888,20890,20896],[15,20889,541],{"id":540},[20,20891,20168,20892,20171,20894,20174],{},[546,20893,3566],{},[546,20895,3529],{},[20,20897,20177,20898,20180,20900,20183],{},[546,20899,3558],{},[546,20901,3566],{},[4070,20903,3662,4071,20904],"react native","mobile development",{},"\u002Fblog\u002Freact-native-vs-dious",{"title":20160,"description":20885},"blog\u002Freact-native-vs-dious","VlkcpvVRs-Q5BDQX5w19bfZQiDlIXmJbA3bgXLsQqsc",{"id":20911,"title":20912,"author":20913,"body":20914,"canonical":115,"categories":115,"date":21111,"description":21112,"excerpt":21113,"extension":118,"img":21125,"keywords":21126,"language":3510,"meta":21132,"navigation":129,"ogImage":115,"path":21133,"rating":275,"readTime":287,"seo":21134,"stem":21135,"tag":3515,"__hash__":21136},"blog\u002Fblog\u002Fsolo-level.md","Level Up in 2026: Why The Solo Level Is a Game-Changer for Developers",{"name":8,"img":10,"website":535},{"type":12,"value":20915,"toc":21102},[20916,20918,20931,20933,20937,20946,20953,20957,20960,20986,21009,21012,21016,21025,21031,21038,21042,21049,21054,21058,21069,21071,21073,21091,21099],[15,20917,541],{"id":540},[20,20919,20920,20921,20924,20925,20928,20929,2230],{},"What if leveling up your ",[546,20922,20923],{},"coding skills"," felt more like playing your favorite RPG than checking off tasks? That’s exactly the experience The Solo Level delivers — a gamified, AI-enhanced platform that makes coding ",[546,20926,20927],{},"fun, competitive, and deeply motivating",". If you’re a developer looking to stay engaged, track progress, and connect with others on the same journey, this is one tool you’ll want in your toolkit in ",[546,20930,11126],{},[15,20932,748],{"id":747},[31,20934,20936],{"id":20935},"what-is-the-solo-level","What Is The Solo Level?",[20,20938,20939,20940,20943,20944],{},"The Solo Level is an innovative coding platform that transforms everyday programming work into a ",[546,20941,20942],{},"role-playing game experience",". Every commit becomes XP, streaks power up your multiplier, and even bugs can earn you rewards — turning the grind of coding into an adventure. ",[3540,20945,3543],{"index":3542},[24,20947,20948],{"type":631},[20,20949,20950,20951],{},"With seamless VS Code integration and real-time visual stats, you don’t just write code — you level up your developer avatar as you improve. ",[3540,20952,3570],{"index":1198},[31,20954,20956],{"id":20955},"how-it-works-your-coding-quest-begins","How It Works — Your Coding Quest Begins",[20,20958,20959],{},"Getting started is simple:",[2922,20961,20962,20970,20978],{},[564,20963,20964,20967,20968],{},[546,20965,20966],{},"Install the Solo Level VS Code extension"," — your editor becomes your dashboard as you code. ",[3540,20969,3582],{"index":1226},[564,20971,20972,20975,20976],{},[546,20973,20974],{},"Write & Commit Code"," — every commit earns you XP and tracks your progress. ",[3540,20977,3630],{"index":1249},[564,20979,20980,20983,20984],{},[546,20981,20982],{},"Earn Badges & Climb the Leaderboards"," — unlock achievements, compete globally, and celebrate your wins with the community. ",[3540,20985,3638],{"index":1273},[10834,20987,20988,20992],{},[2459,20989,20991],{"id":20990},"core-gameplay-features","Core Gameplay Features",[561,20993,20994,20997,21000,21003,21006],{},[564,20995,20996],{},"✔ XP for commits and daily streaks",[564,20998,20999],{},"✔ Visual progress dashboards",[564,21001,21002],{},"✔ Global and guild leaderboards",[564,21004,21005],{},"✔ Bounty system for challenges",[564,21007,21008],{},"✔ Team management and competitions",[20,21010,21011],{},"Whether you’re coding solo or rallying a guild of teammates, Solo Level turns your codebase into a world of quests and rewards.",[31,21013,21015],{"id":21014},"supercharged-by-ai","Supercharged by AI",[20,21017,21018,21019,21022,21023],{},"One of the most exciting aspects of The Solo Level is how it uses ",[546,21020,21021],{},"AI to boost learning and challenge creation",". Personalized AI-generated coding challenges match your skill level and learning goals, offering custom tasks that help you grow faster. ",[3540,21024,3653],{"index":1297},[161,21026,21028],{"icon":11228,"title":21027},"AI That Learns With You",[20,21029,21030],{},"AI isn’t just a buzzword here — it creates tailored challenges and insightful feedback that adapt to your progress.",[20,21032,21033,21034],{},"AI also powers smart analytics, giving actionable insights into your coding habits so you can identify strengths and areas to improve. ",[3540,21035,21037],{"index":21036},"6","oaicite:6",[31,21039,21041],{"id":21040},"go-beyond-solo-build-a-community","Go Beyond Solo — Build a Community",[20,21043,21044,21045],{},"Coding doesn’t have to be a solitary pursuit. With guilds and team challenges, The Solo Level encourages collaboration, friendly competition, and shared accomplishment. Assemble a team, set goals, track progress together, and climb the leaderboards as a squad. ",[3540,21046,21048],{"index":21047},"7","oaicite:7",[24,21050,21051],{"type":26},[20,21052,21053],{},"Friendly competition isn’t just fun — it motivates consistent progress and boosts productivity.",[31,21055,21057],{"id":21056},"why-developers-love-it","Why Developers Love It",[20,21059,21060,21061,21064,21065],{},"Solo Level isn’t just another tool — it’s a ",[546,21062,21063],{},"motivation engine",". Whether you’re a beginner wanting to build habits or a seasoned pro striving for mastery, gamification helps you stay engaged and productive. From day one you’re rewarded, tracked, and connected. ",[3540,21066,21068],{"index":21067},"8","oaicite:8",[72,21070],{},[15,21072,3352],{"id":3351},[20,21074,21075,21076,21079,21080,7128,21083,21086,21087,21090],{},"The Solo Level turns coding into something you ",[3587,21077,21078],{},"want"," to come back to every day. It blends ",[546,21081,21082],{},"game mechanics",[546,21084,21085],{},"AI-powered challenges",", and ",[546,21088,21089],{},"community engagement"," to make improving your craft both fun and measurable. If you’re ready to level up your skills and join a growing guild of developers, there’s never been a better time to start your journey. 🎮🚀",[20,21092,21093,21094,21098],{},"👉 Check it out at ",[203,21095,21096],{"href":21096,"rel":21097},"https:\u002F\u002Fwww.thesololevel.com\u002F",[207]," and begin your own coding adventure.",[3540,21100,21101],{},"oaicite:9",{"title":55,"searchDepth":110,"depth":110,"links":21103},[21104,21105,21108,21109,21110],{"id":20935,"depth":113,"text":20936},{"id":20955,"depth":113,"text":20956,"children":21106},[21107],{"id":20990,"depth":110,"text":20991},{"id":21014,"depth":113,"text":21015},{"id":21040,"depth":113,"text":21041},{"id":21056,"depth":113,"text":21057},"2026-01-05","Explore how The Solo Level turns coding into an RPG adventure with AI-powered challenges, XP systems, and community leaderboards.",{"type":12,"value":21114},[21115,21117],[15,21116,541],{"id":540},[20,21118,20920,21119,20924,21121,20928,21123,2230],{},[546,21120,20923],{},[546,21122,20927],{},[546,21124,11126],{},"https:\u002F\u002Fres.cloudinary.com\u002Fddszyeplg\u002Fimage\u002Fupload\u002Fv1767533332\u002Fsolo_level_pqfwko.jpg",[21127,21128,21129,21130,21131],"solo level","coding gamification","ai","developers","productivity",{},"\u002Fblog\u002Fsolo-level",{"title":20912,"description":21112},"blog\u002Fsolo-level","mLN2pXFUaKU9_0bbZ48fq4EhyfBty7OHC2KRS2cxt9Y",{"id":21138,"title":21139,"author":21140,"body":21141,"canonical":115,"categories":115,"date":22498,"description":22499,"excerpt":22500,"extension":118,"img":3502,"keywords":22506,"language":3510,"meta":22512,"navigation":129,"ogImage":115,"path":22513,"rating":275,"readTime":293,"seo":22514,"stem":22515,"tag":3515,"__hash__":22516},"blog\u002Fblog\u002Ftanstack-query.md","Mastering Data Fetching with TanStack Query: A Modern Approach",{"name":8,"img":10,"website":535},{"type":12,"value":21142,"toc":22482},[21143,21145,21148,21152,21155,21158,21162,21165,21203,21208,21212,21215,21219,21248,21252,21255,21312,21316,21319,21464,21470,21474,21478,21481,21668,21672,21675,21794,21803,21807,21810,21948,21950,21955,21959,22012,22016,22019,22184,22188,22191,22238,22244,22248,22252,22255,22324,22327,22330,22463,22465,22467,22470,22473,22476,22479],[15,21144,541],{"id":540},[20,21146,21147],{},"Data fetching is one of the most common challenges developers face when building modern web applications. While it might seem straightforward at first, managing server state quickly becomes complex when you need to handle caching, background updates, pagination, and error states. This is where TanStack Query (formerly React Query) comes in—a powerful library that transforms how we think about server state management.",[15,21149,21151],{"id":21150},"what-is-tanstack-query","What is TanStack Query?",[20,21153,21154],{},"TanStack Query is a data-fetching and state management library that provides powerful tools for fetching, caching, synchronizing, and updating server state in your applications. Unlike traditional state management solutions, TanStack Query treats server data as a first-class citizen, recognizing that it has fundamentally different characteristics than client state.",[20,21156,21157],{},"The library works seamlessly with React, Vue, Svelte, and Solid, making it a versatile choice regardless of your framework preference. It eliminates the need for writing complex boilerplate code and helps you build more maintainable applications.",[31,21159,21161],{"id":21160},"why-use-tanstack-query","Why Use TanStack Query?",[20,21163,21164],{},"Traditional data fetching approaches often require you to manage loading states, error handling, caching logic, and refetching strategies manually. TanStack Query handles all of this out of the box, providing:",[561,21166,21167,21173,21179,21185,21191,21197],{},[564,21168,21169,21172],{},[546,21170,21171],{},"Automatic caching"," with intelligent cache invalidation",[564,21174,21175,21178],{},[546,21176,21177],{},"Background refetching"," to keep data fresh",[564,21180,21181,21184],{},[546,21182,21183],{},"Optimistic updates"," for better UX",[564,21186,21187,21190],{},[546,21188,21189],{},"Request deduplication"," to prevent unnecessary network calls",[564,21192,21193,21196],{},[546,21194,21195],{},"Pagination and infinite scroll"," support",[564,21198,21199,21202],{},[546,21200,21201],{},"Prefetching"," for improved perceived performance",[24,21204,21205],{"type":631},[20,21206,21207],{},"TanStack Query doesn't replace fetch or axios—it enhances them by providing a smart layer of abstraction for managing server state.",[15,21209,21211],{"id":21210},"getting-started","Getting Started",[20,21213,21214],{},"Let's dive into how you can start using TanStack Query in your React application.",[31,21216,21218],{"id":21217},"installation","Installation",[47,21220,21222],{"className":758,"code":21221,"filename":760,"language":761,"meta":55,"style":55},"npm install @tanstack\u002Freact-query\n# or\nyarn add @tanstack\u002Freact-query\n",[39,21223,21224,21233,21238],{"__ignoreMap":55},[250,21225,21226,21228,21230],{"class":252,"line":253},[250,21227,4226],{"class":774},[250,21229,808],{"class":782},[250,21231,21232],{"class":782}," @tanstack\u002Freact-query\n",[250,21234,21235],{"class":252,"line":113},[250,21236,21237],{"class":768},"# or\n",[250,21239,21240,21243,21246],{"class":252,"line":110},[250,21241,21242],{"class":774},"yarn",[250,21244,21245],{"class":782}," add",[250,21247,21232],{"class":782},[31,21249,21251],{"id":21250},"basic-setup","Basic Setup",[20,21253,21254],{},"First, wrap your application with the QueryClientProvider:",[47,21256,21259],{"className":20349,"code":21257,"filename":21258,"language":20351,"meta":55,"style":55},"import { QueryClient, QueryClientProvider } from '@tanstack\u002Freact-query';\n\nconst queryClient = new QueryClient();\n\nfunction App() {\n  return (\n    \u003CQueryClientProvider client={queryClient}>\n      \u003CYourApp \u002F>\n    \u003C\u002FQueryClientProvider>\n  );\n}\n","App.tsx",[39,21260,21261,21266,21270,21275,21279,21284,21289,21294,21299,21304,21308],{"__ignoreMap":55},[250,21262,21263],{"class":252,"line":253},[250,21264,21265],{},"import { QueryClient, QueryClientProvider } from '@tanstack\u002Freact-query';\n",[250,21267,21268],{"class":252,"line":113},[250,21269,795],{"emptyLinePlaceholder":129},[250,21271,21272],{"class":252,"line":110},[250,21273,21274],{},"const queryClient = new QueryClient();\n",[250,21276,21277],{"class":252,"line":269},[250,21278,795],{"emptyLinePlaceholder":129},[250,21280,21281],{"class":252,"line":275},[250,21282,21283],{},"function App() {\n",[250,21285,21286],{"class":252,"line":281},[250,21287,21288],{},"  return (\n",[250,21290,21291],{"class":252,"line":287},[250,21292,21293],{},"    \u003CQueryClientProvider client={queryClient}>\n",[250,21295,21296],{"class":252,"line":293},[250,21297,21298],{},"      \u003CYourApp \u002F>\n",[250,21300,21301],{"class":252,"line":299},[250,21302,21303],{},"    \u003C\u002FQueryClientProvider>\n",[250,21305,21306],{"class":252,"line":132},[250,21307,2859],{},[250,21309,21310],{"class":252,"line":310},[250,21311,991],{},[31,21313,21315],{"id":21314},"your-first-query","Your First Query",[20,21317,21318],{},"Here's a simple example of fetching user data:",[47,21320,21323],{"className":20349,"code":21321,"filename":21322,"language":20351,"meta":55,"style":55},"import { useQuery } from '@tanstack\u002Freact-query';\n\ninterface User {\n  id: number;\n  name: string;\n  email: string;\n}\n\nasync function fetchUser(userId: string): Promise\u003CUser> {\n  const response = await fetch(`\u002Fapi\u002Fusers\u002F${userId}`);\n  if (!response.ok) throw new Error('Failed to fetch user');\n  return response.json();\n}\n\nfunction UserProfile({ userId }: { userId: string }) {\n  const { data, isLoading, error } = useQuery({\n    queryKey: ['user', userId],\n    queryFn: () => fetchUser(userId),\n  });\n\n  if (isLoading) return \u003Cdiv>Loading...\u003C\u002Fdiv>;\n  if (error) return \u003Cdiv>Error: {error.message}\u003C\u002Fdiv>;\n\n  return (\n    \u003Cdiv>\n      \u003Ch1>{data.name}\u003C\u002Fh1>\n      \u003Cp>{data.email}\u003C\u002Fp>\n    \u003C\u002Fdiv>\n  );\n}\n","UserProfile.tsx",[39,21324,21325,21330,21334,21339,21344,21349,21354,21358,21362,21367,21372,21377,21382,21386,21390,21395,21400,21405,21410,21414,21418,21423,21428,21432,21436,21441,21446,21451,21456,21460],{"__ignoreMap":55},[250,21326,21327],{"class":252,"line":253},[250,21328,21329],{},"import { useQuery } from '@tanstack\u002Freact-query';\n",[250,21331,21332],{"class":252,"line":113},[250,21333,795],{"emptyLinePlaceholder":129},[250,21335,21336],{"class":252,"line":110},[250,21337,21338],{},"interface User {\n",[250,21340,21341],{"class":252,"line":269},[250,21342,21343],{},"  id: number;\n",[250,21345,21346],{"class":252,"line":275},[250,21347,21348],{},"  name: string;\n",[250,21350,21351],{"class":252,"line":281},[250,21352,21353],{},"  email: string;\n",[250,21355,21356],{"class":252,"line":287},[250,21357,991],{},[250,21359,21360],{"class":252,"line":293},[250,21361,795],{"emptyLinePlaceholder":129},[250,21363,21364],{"class":252,"line":299},[250,21365,21366],{},"async function fetchUser(userId: string): Promise\u003CUser> {\n",[250,21368,21369],{"class":252,"line":132},[250,21370,21371],{},"  const response = await fetch(`\u002Fapi\u002Fusers\u002F${userId}`);\n",[250,21373,21374],{"class":252,"line":310},[250,21375,21376],{},"  if (!response.ok) throw new Error('Failed to fetch user');\n",[250,21378,21379],{"class":252,"line":316},[250,21380,21381],{},"  return response.json();\n",[250,21383,21384],{"class":252,"line":322},[250,21385,991],{},[250,21387,21388],{"class":252,"line":328},[250,21389,795],{"emptyLinePlaceholder":129},[250,21391,21392],{"class":252,"line":334},[250,21393,21394],{},"function UserProfile({ userId }: { userId: string }) {\n",[250,21396,21397],{"class":252,"line":340},[250,21398,21399],{},"  const { data, isLoading, error } = useQuery({\n",[250,21401,21402],{"class":252,"line":346},[250,21403,21404],{},"    queryKey: ['user', userId],\n",[250,21406,21407],{"class":252,"line":352},[250,21408,21409],{},"    queryFn: () => fetchUser(userId),\n",[250,21411,21412],{"class":252,"line":358},[250,21413,6749],{},[250,21415,21416],{"class":252,"line":364},[250,21417,795],{"emptyLinePlaceholder":129},[250,21419,21420],{"class":252,"line":370},[250,21421,21422],{},"  if (isLoading) return \u003Cdiv>Loading...\u003C\u002Fdiv>;\n",[250,21424,21425],{"class":252,"line":376},[250,21426,21427],{},"  if (error) return \u003Cdiv>Error: {error.message}\u003C\u002Fdiv>;\n",[250,21429,21430],{"class":252,"line":382},[250,21431,795],{"emptyLinePlaceholder":129},[250,21433,21434],{"class":252,"line":388},[250,21435,21288],{},[250,21437,21438],{"class":252,"line":393},[250,21439,21440],{},"    \u003Cdiv>\n",[250,21442,21443],{"class":252,"line":399},[250,21444,21445],{},"      \u003Ch1>{data.name}\u003C\u002Fh1>\n",[250,21447,21448],{"class":252,"line":405},[250,21449,21450],{},"      \u003Cp>{data.email}\u003C\u002Fp>\n",[250,21452,21453],{"class":252,"line":410},[250,21454,21455],{},"    \u003C\u002Fdiv>\n",[250,21457,21458],{"class":252,"line":415},[250,21459,2859],{},[250,21461,21462],{"class":252,"line":420},[250,21463,991],{},[161,21465,21467],{"icon":5036,"title":21466},"Query Keys",[20,21468,21469],{},"Query keys are crucial in TanStack Query. They uniquely identify your queries and are used for caching, refetching, and cache invalidation. Use arrays with descriptive values for better organization.",[15,21471,21473],{"id":21472},"advanced-features","Advanced Features",[31,21475,21477],{"id":21476},"mutations","Mutations",[20,21479,21480],{},"Mutations handle data updates, creations, and deletions. Here's how to create a mutation for updating user data:",[47,21482,21485],{"className":20349,"code":21483,"filename":21484,"language":20351,"meta":55,"style":55},"import { useMutation, useQueryClient } from '@tanstack\u002Freact-query';\n\ninterface UpdateUserData {\n  name: string;\n  email: string;\n}\n\nfunction UpdateUserForm({ userId }: { userId: string }) {\n  const queryClient = useQueryClient();\n\n  const mutation = useMutation({\n    mutationFn: (userData: UpdateUserData) =>\n      fetch(`\u002Fapi\u002Fusers\u002F${userId}`, {\n        method: 'PUT',\n        body: JSON.stringify(userData),\n        headers: { 'Content-Type': 'application\u002Fjson' },\n      }),\n    onSuccess: () => {\n      \u002F\u002F Invalidate and refetch user data\n      queryClient.invalidateQueries({ queryKey: ['user', userId] });\n    },\n  });\n\n  const handleSubmit = (data: UpdateUserData) => {\n    mutation.mutate(data);\n  };\n\n  return (\n    \u003Cform onSubmit={(e) => {\n      e.preventDefault();\n      \u002F\u002F Form handling logic\n    }}>\n      {mutation.isPending && \u003Cp>Updating...\u003C\u002Fp>}\n      {mutation.isError && \u003Cp>Error updating user\u003C\u002Fp>}\n      {mutation.isSuccess && \u003Cp>User updated successfully!\u003C\u002Fp>}\n      {\u002F* Form fields *\u002F}\n    \u003C\u002Fform>\n  );\n}\n","UpdateUser.tsx",[39,21486,21487,21492,21496,21501,21505,21509,21513,21517,21522,21527,21531,21536,21541,21546,21551,21556,21561,21566,21571,21576,21581,21585,21589,21593,21598,21603,21607,21611,21615,21620,21625,21630,21635,21640,21645,21650,21655,21660,21664],{"__ignoreMap":55},[250,21488,21489],{"class":252,"line":253},[250,21490,21491],{},"import { useMutation, useQueryClient } from '@tanstack\u002Freact-query';\n",[250,21493,21494],{"class":252,"line":113},[250,21495,795],{"emptyLinePlaceholder":129},[250,21497,21498],{"class":252,"line":110},[250,21499,21500],{},"interface UpdateUserData {\n",[250,21502,21503],{"class":252,"line":269},[250,21504,21348],{},[250,21506,21507],{"class":252,"line":275},[250,21508,21353],{},[250,21510,21511],{"class":252,"line":281},[250,21512,991],{},[250,21514,21515],{"class":252,"line":287},[250,21516,795],{"emptyLinePlaceholder":129},[250,21518,21519],{"class":252,"line":293},[250,21520,21521],{},"function UpdateUserForm({ userId }: { userId: string }) {\n",[250,21523,21524],{"class":252,"line":299},[250,21525,21526],{},"  const queryClient = useQueryClient();\n",[250,21528,21529],{"class":252,"line":132},[250,21530,795],{"emptyLinePlaceholder":129},[250,21532,21533],{"class":252,"line":310},[250,21534,21535],{},"  const mutation = useMutation({\n",[250,21537,21538],{"class":252,"line":316},[250,21539,21540],{},"    mutationFn: (userData: UpdateUserData) =>\n",[250,21542,21543],{"class":252,"line":322},[250,21544,21545],{},"      fetch(`\u002Fapi\u002Fusers\u002F${userId}`, {\n",[250,21547,21548],{"class":252,"line":328},[250,21549,21550],{},"        method: 'PUT',\n",[250,21552,21553],{"class":252,"line":334},[250,21554,21555],{},"        body: JSON.stringify(userData),\n",[250,21557,21558],{"class":252,"line":340},[250,21559,21560],{},"        headers: { 'Content-Type': 'application\u002Fjson' },\n",[250,21562,21563],{"class":252,"line":346},[250,21564,21565],{},"      }),\n",[250,21567,21568],{"class":252,"line":352},[250,21569,21570],{},"    onSuccess: () => {\n",[250,21572,21573],{"class":252,"line":358},[250,21574,21575],{},"      \u002F\u002F Invalidate and refetch user data\n",[250,21577,21578],{"class":252,"line":364},[250,21579,21580],{},"      queryClient.invalidateQueries({ queryKey: ['user', userId] });\n",[250,21582,21583],{"class":252,"line":370},[250,21584,14039],{},[250,21586,21587],{"class":252,"line":376},[250,21588,6749],{},[250,21590,21591],{"class":252,"line":382},[250,21592,795],{"emptyLinePlaceholder":129},[250,21594,21595],{"class":252,"line":388},[250,21596,21597],{},"  const handleSubmit = (data: UpdateUserData) => {\n",[250,21599,21600],{"class":252,"line":393},[250,21601,21602],{},"    mutation.mutate(data);\n",[250,21604,21605],{"class":252,"line":399},[250,21606,1161],{},[250,21608,21609],{"class":252,"line":405},[250,21610,795],{"emptyLinePlaceholder":129},[250,21612,21613],{"class":252,"line":410},[250,21614,21288],{},[250,21616,21617],{"class":252,"line":415},[250,21618,21619],{},"    \u003Cform onSubmit={(e) => {\n",[250,21621,21622],{"class":252,"line":420},[250,21623,21624],{},"      e.preventDefault();\n",[250,21626,21627],{"class":252,"line":426},[250,21628,21629],{},"      \u002F\u002F Form handling logic\n",[250,21631,21632],{"class":252,"line":431},[250,21633,21634],{},"    }}>\n",[250,21636,21637],{"class":252,"line":436},[250,21638,21639],{},"      {mutation.isPending && \u003Cp>Updating...\u003C\u002Fp>}\n",[250,21641,21642],{"class":252,"line":442},[250,21643,21644],{},"      {mutation.isError && \u003Cp>Error updating user\u003C\u002Fp>}\n",[250,21646,21647],{"class":252,"line":447},[250,21648,21649],{},"      {mutation.isSuccess && \u003Cp>User updated successfully!\u003C\u002Fp>}\n",[250,21651,21652],{"class":252,"line":453},[250,21653,21654],{},"      {\u002F* Form fields *\u002F}\n",[250,21656,21657],{"class":252,"line":459},[250,21658,21659],{},"    \u003C\u002Fform>\n",[250,21661,21662],{"class":252,"line":465},[250,21663,2859],{},[250,21665,21666],{"class":252,"line":471},[250,21667,991],{},[31,21669,21671],{"id":21670},"optimistic-updates","Optimistic Updates",[20,21673,21674],{},"Optimistic updates provide instant feedback by updating the UI before the server responds:",[47,21676,21679],{"className":20349,"code":21677,"filename":21678,"language":20351,"meta":55,"style":55},"const mutation = useMutation({\n  mutationFn: updateTodo,\n  onMutate: async (newTodo) => {\n    \u002F\u002F Cancel outgoing refetches\n    await queryClient.cancelQueries({ queryKey: ['todos'] });\n\n    \u002F\u002F Snapshot the previous value\n    const previousTodos = queryClient.getQueryData(['todos']);\n\n    \u002F\u002F Optimistically update\n    queryClient.setQueryData(['todos'], (old: Todo[]) => [...old, newTodo]);\n\n    \u002F\u002F Return context with the snapshot\n    return { previousTodos };\n  },\n  onError: (err, newTodo, context) => {\n    \u002F\u002F Rollback on error\n    queryClient.setQueryData(['todos'], context?.previousTodos);\n  },\n  onSettled: () => {\n    \u002F\u002F Refetch after error or success\n    queryClient.invalidateQueries({ queryKey: ['todos'] });\n  },\n});\n","OptimisticUpdate.tsx",[39,21680,21681,21686,21691,21696,21701,21706,21710,21715,21720,21724,21729,21734,21738,21743,21748,21752,21757,21762,21767,21771,21776,21781,21786,21790],{"__ignoreMap":55},[250,21682,21683],{"class":252,"line":253},[250,21684,21685],{},"const mutation = useMutation({\n",[250,21687,21688],{"class":252,"line":113},[250,21689,21690],{},"  mutationFn: updateTodo,\n",[250,21692,21693],{"class":252,"line":110},[250,21694,21695],{},"  onMutate: async (newTodo) => {\n",[250,21697,21698],{"class":252,"line":269},[250,21699,21700],{},"    \u002F\u002F Cancel outgoing refetches\n",[250,21702,21703],{"class":252,"line":275},[250,21704,21705],{},"    await queryClient.cancelQueries({ queryKey: ['todos'] });\n",[250,21707,21708],{"class":252,"line":281},[250,21709,795],{"emptyLinePlaceholder":129},[250,21711,21712],{"class":252,"line":287},[250,21713,21714],{},"    \u002F\u002F Snapshot the previous value\n",[250,21716,21717],{"class":252,"line":293},[250,21718,21719],{},"    const previousTodos = queryClient.getQueryData(['todos']);\n",[250,21721,21722],{"class":252,"line":299},[250,21723,795],{"emptyLinePlaceholder":129},[250,21725,21726],{"class":252,"line":132},[250,21727,21728],{},"    \u002F\u002F Optimistically update\n",[250,21730,21731],{"class":252,"line":310},[250,21732,21733],{},"    queryClient.setQueryData(['todos'], (old: Todo[]) => [...old, newTodo]);\n",[250,21735,21736],{"class":252,"line":316},[250,21737,795],{"emptyLinePlaceholder":129},[250,21739,21740],{"class":252,"line":322},[250,21741,21742],{},"    \u002F\u002F Return context with the snapshot\n",[250,21744,21745],{"class":252,"line":328},[250,21746,21747],{},"    return { previousTodos };\n",[250,21749,21750],{"class":252,"line":334},[250,21751,1048],{},[250,21753,21754],{"class":252,"line":340},[250,21755,21756],{},"  onError: (err, newTodo, context) => {\n",[250,21758,21759],{"class":252,"line":346},[250,21760,21761],{},"    \u002F\u002F Rollback on error\n",[250,21763,21764],{"class":252,"line":352},[250,21765,21766],{},"    queryClient.setQueryData(['todos'], context?.previousTodos);\n",[250,21768,21769],{"class":252,"line":358},[250,21770,1048],{},[250,21772,21773],{"class":252,"line":364},[250,21774,21775],{},"  onSettled: () => {\n",[250,21777,21778],{"class":252,"line":370},[250,21779,21780],{},"    \u002F\u002F Refetch after error or success\n",[250,21782,21783],{"class":252,"line":376},[250,21784,21785],{},"    queryClient.invalidateQueries({ queryKey: ['todos'] });\n",[250,21787,21788],{"class":252,"line":382},[250,21789,1048],{},[250,21791,21792],{"class":252,"line":388},[250,21793,1077],{},[10834,21795,21796,21800],{},[2459,21797,21799],{"id":21798},"performance-benefits","Performance Benefits",[20,21801,21802],{},"Optimistic updates can make your application feel up to 10x faster by eliminating the perceived latency of server responses.",[31,21804,21806],{"id":21805},"pagination","Pagination",[20,21808,21809],{},"TanStack Query makes pagination simple with built-in support:",[47,21811,21814],{"className":20349,"code":21812,"filename":21813,"language":20351,"meta":55,"style":55},"function PaginatedPosts() {\n  const [page, setPage] = useState(1);\n\n  const { data, isLoading, isPlaceholderData } = useQuery({\n    queryKey: ['posts', page],\n    queryFn: () => fetchPosts(page),\n    placeholderData: (previousData) => previousData,\n  });\n\n  return (\n    \u003Cdiv>\n      {data?.posts.map(post => \u003CPostCard key={post.id} post={post} \u002F>)}\n      \n      \u003Cbutton\n        onClick={() => setPage(old => Math.max(old - 1, 1))}\n        disabled={page === 1}\n      >\n        Previous\n      \u003C\u002Fbutton>\n      \n      \u003Cbutton\n        onClick={() => setPage(old => old + 1)}\n        disabled={isPlaceholderData || !data?.hasMore}\n      >\n        Next\n      \u003C\u002Fbutton>\n    \u003C\u002Fdiv>\n  );\n}\n","PaginatedList.tsx",[39,21815,21816,21821,21826,21830,21835,21840,21845,21850,21854,21858,21862,21866,21871,21875,21880,21885,21890,21895,21900,21905,21909,21913,21918,21923,21927,21932,21936,21940,21944],{"__ignoreMap":55},[250,21817,21818],{"class":252,"line":253},[250,21819,21820],{},"function PaginatedPosts() {\n",[250,21822,21823],{"class":252,"line":113},[250,21824,21825],{},"  const [page, setPage] = useState(1);\n",[250,21827,21828],{"class":252,"line":110},[250,21829,795],{"emptyLinePlaceholder":129},[250,21831,21832],{"class":252,"line":269},[250,21833,21834],{},"  const { data, isLoading, isPlaceholderData } = useQuery({\n",[250,21836,21837],{"class":252,"line":275},[250,21838,21839],{},"    queryKey: ['posts', page],\n",[250,21841,21842],{"class":252,"line":281},[250,21843,21844],{},"    queryFn: () => fetchPosts(page),\n",[250,21846,21847],{"class":252,"line":287},[250,21848,21849],{},"    placeholderData: (previousData) => previousData,\n",[250,21851,21852],{"class":252,"line":293},[250,21853,6749],{},[250,21855,21856],{"class":252,"line":299},[250,21857,795],{"emptyLinePlaceholder":129},[250,21859,21860],{"class":252,"line":132},[250,21861,21288],{},[250,21863,21864],{"class":252,"line":310},[250,21865,21440],{},[250,21867,21868],{"class":252,"line":316},[250,21869,21870],{},"      {data?.posts.map(post => \u003CPostCard key={post.id} post={post} \u002F>)}\n",[250,21872,21873],{"class":252,"line":322},[250,21874,17061],{},[250,21876,21877],{"class":252,"line":328},[250,21878,21879],{},"      \u003Cbutton\n",[250,21881,21882],{"class":252,"line":334},[250,21883,21884],{},"        onClick={() => setPage(old => Math.max(old - 1, 1))}\n",[250,21886,21887],{"class":252,"line":340},[250,21888,21889],{},"        disabled={page === 1}\n",[250,21891,21892],{"class":252,"line":346},[250,21893,21894],{},"      >\n",[250,21896,21897],{"class":252,"line":352},[250,21898,21899],{},"        Previous\n",[250,21901,21902],{"class":252,"line":358},[250,21903,21904],{},"      \u003C\u002Fbutton>\n",[250,21906,21907],{"class":252,"line":364},[250,21908,17061],{},[250,21910,21911],{"class":252,"line":370},[250,21912,21879],{},[250,21914,21915],{"class":252,"line":376},[250,21916,21917],{},"        onClick={() => setPage(old => old + 1)}\n",[250,21919,21920],{"class":252,"line":382},[250,21921,21922],{},"        disabled={isPlaceholderData || !data?.hasMore}\n",[250,21924,21925],{"class":252,"line":388},[250,21926,21894],{},[250,21928,21929],{"class":252,"line":393},[250,21930,21931],{},"        Next\n",[250,21933,21934],{"class":252,"line":399},[250,21935,21904],{},[250,21937,21938],{"class":252,"line":405},[250,21939,21455],{},[250,21941,21942],{"class":252,"line":410},[250,21943,2859],{},[250,21945,21946],{"class":252,"line":415},[250,21947,991],{},[15,21949,12925],{"id":12924},[24,21951,21952],{"type":26},[20,21953,21954],{},"Always provide appropriate staleTime and gcTime values based on your data's characteristics. Not all data needs real-time updates!",[31,21956,21958],{"id":21957},"configure-cache-times-appropriately","Configure Cache Times Appropriately",[47,21960,21963],{"className":20349,"code":21961,"filename":21962,"language":20351,"meta":55,"style":55},"const queryClient = new QueryClient({\n  defaultOptions: {\n    queries: {\n      staleTime: 1000 * 60 * 5, \u002F\u002F 5 minutes\n      gcTime: 1000 * 60 * 10, \u002F\u002F 10 minutes (formerly cacheTime)\n      retry: 3,\n      refetchOnWindowFocus: true,\n    },\n  },\n});\n","queryClient.ts",[39,21964,21965,21970,21975,21980,21985,21990,21995,22000,22004,22008],{"__ignoreMap":55},[250,21966,21967],{"class":252,"line":253},[250,21968,21969],{},"const queryClient = new QueryClient({\n",[250,21971,21972],{"class":252,"line":113},[250,21973,21974],{},"  defaultOptions: {\n",[250,21976,21977],{"class":252,"line":110},[250,21978,21979],{},"    queries: {\n",[250,21981,21982],{"class":252,"line":269},[250,21983,21984],{},"      staleTime: 1000 * 60 * 5, \u002F\u002F 5 minutes\n",[250,21986,21987],{"class":252,"line":275},[250,21988,21989],{},"      gcTime: 1000 * 60 * 10, \u002F\u002F 10 minutes (formerly cacheTime)\n",[250,21991,21992],{"class":252,"line":281},[250,21993,21994],{},"      retry: 3,\n",[250,21996,21997],{"class":252,"line":287},[250,21998,21999],{},"      refetchOnWindowFocus: true,\n",[250,22001,22002],{"class":252,"line":293},[250,22003,14039],{},[250,22005,22006],{"class":252,"line":299},[250,22007,1048],{},[250,22009,22010],{"class":252,"line":132},[250,22011,1077],{},[31,22013,22015],{"id":22014},"use-query-keys-consistently","Use Query Keys Consistently",[20,22017,22018],{},"Establish a naming convention for your query keys:",[47,22020,22023],{"className":1010,"code":22021,"filename":22022,"language":1012,"meta":55,"style":55},"export const queryKeys = {\n  users: {\n    all: ['users'] as const,\n    detail: (id: string) => ['users', id] as const,\n    posts: (id: string) => ['users', id, 'posts'] as const,\n  },\n  posts: {\n    all: ['posts'] as const,\n    detail: (id: string) => ['posts', id] as const,\n  },\n};\n","queryKeys.ts",[39,22024,22025,22038,22043,22059,22090,22125,22129,22134,22148,22176,22180],{"__ignoreMap":55},[250,22026,22027,22029,22031,22034,22036],{"class":252,"line":253},[250,22028,1019],{"class":786},[250,22030,4438],{"class":786},[250,22032,22033],{"class":778}," queryKeys",[250,22035,1187],{"class":786},[250,22037,1118],{"class":912},[250,22039,22040],{"class":252,"line":113},[250,22041,22042],{"class":912},"  users: {\n",[250,22044,22045,22048,22050,22053,22055,22057],{"class":252,"line":110},[250,22046,22047],{"class":912},"    all: [",[250,22049,13154],{"class":782},[250,22051,22052],{"class":912},"] ",[250,22054,1472],{"class":786},[250,22056,4438],{"class":786},[250,22058,927],{"class":912},[250,22060,22061,22064,22067,22069,22071,22073,22075,22077,22079,22081,22084,22086,22088],{"class":252,"line":269},[250,22062,22063],{"class":774},"    detail",[250,22065,22066],{"class":912},": (",[250,22068,9727],{"class":1370},[250,22070,1007],{"class":786},[250,22072,2506],{"class":778},[250,22074,1446],{"class":912},[250,22076,1115],{"class":786},[250,22078,7123],{"class":912},[250,22080,13154],{"class":782},[250,22082,22083],{"class":912},", id] ",[250,22085,1472],{"class":786},[250,22087,4438],{"class":786},[250,22089,927],{"class":912},[250,22091,22092,22095,22097,22099,22101,22103,22105,22107,22109,22111,22114,22117,22119,22121,22123],{"class":252,"line":275},[250,22093,22094],{"class":774},"    posts",[250,22096,22066],{"class":912},[250,22098,9727],{"class":1370},[250,22100,1007],{"class":786},[250,22102,2506],{"class":778},[250,22104,1446],{"class":912},[250,22106,1115],{"class":786},[250,22108,7123],{"class":912},[250,22110,13154],{"class":782},[250,22112,22113],{"class":912},", id, ",[250,22115,22116],{"class":782},"'posts'",[250,22118,22052],{"class":912},[250,22120,1472],{"class":786},[250,22122,4438],{"class":786},[250,22124,927],{"class":912},[250,22126,22127],{"class":252,"line":281},[250,22128,1048],{"class":912},[250,22130,22131],{"class":252,"line":287},[250,22132,22133],{"class":912},"  posts: {\n",[250,22135,22136,22138,22140,22142,22144,22146],{"class":252,"line":293},[250,22137,22047],{"class":912},[250,22139,22116],{"class":782},[250,22141,22052],{"class":912},[250,22143,1472],{"class":786},[250,22145,4438],{"class":786},[250,22147,927],{"class":912},[250,22149,22150,22152,22154,22156,22158,22160,22162,22164,22166,22168,22170,22172,22174],{"class":252,"line":299},[250,22151,22063],{"class":774},[250,22153,22066],{"class":912},[250,22155,9727],{"class":1370},[250,22157,1007],{"class":786},[250,22159,2506],{"class":778},[250,22161,1446],{"class":912},[250,22163,1115],{"class":786},[250,22165,7123],{"class":912},[250,22167,22116],{"class":782},[250,22169,22083],{"class":912},[250,22171,1472],{"class":786},[250,22173,4438],{"class":786},[250,22175,927],{"class":912},[250,22177,22178],{"class":252,"line":132},[250,22179,1048],{"class":912},[250,22181,22182],{"class":252,"line":310},[250,22183,10945],{"class":912},[31,22185,22187],{"id":22186},"enable-devtools","Enable DevTools",[20,22189,22190],{},"TanStack Query comes with excellent developer tools:",[47,22192,22194],{"className":20349,"code":22193,"filename":21258,"language":20351,"meta":55,"style":55},"import { ReactQueryDevtools } from '@tanstack\u002Freact-query-devtools';\n\nfunction App() {\n  return (\n    \u003CQueryClientProvider client={queryClient}>\n      \u003CYourApp \u002F>\n      \u003CReactQueryDevtools initialIsOpen={false} \u002F>\n    \u003C\u002FQueryClientProvider>\n  );\n}\n",[39,22195,22196,22201,22205,22209,22213,22217,22221,22226,22230,22234],{"__ignoreMap":55},[250,22197,22198],{"class":252,"line":253},[250,22199,22200],{},"import { ReactQueryDevtools } from '@tanstack\u002Freact-query-devtools';\n",[250,22202,22203],{"class":252,"line":113},[250,22204,795],{"emptyLinePlaceholder":129},[250,22206,22207],{"class":252,"line":110},[250,22208,21283],{},[250,22210,22211],{"class":252,"line":269},[250,22212,21288],{},[250,22214,22215],{"class":252,"line":275},[250,22216,21293],{},[250,22218,22219],{"class":252,"line":281},[250,22220,21298],{},[250,22222,22223],{"class":252,"line":287},[250,22224,22225],{},"      \u003CReactQueryDevtools initialIsOpen={false} \u002F>\n",[250,22227,22228],{"class":252,"line":293},[250,22229,21303],{},[250,22231,22232],{"class":252,"line":299},[250,22233,2859],{},[250,22235,22236],{"class":252,"line":132},[250,22237,991],{},[161,22239,22241],{"icon":7846,"title":22240},"DevTools Pro Tip",[20,22242,22243],{},"The DevTools panel provides real-time insights into your queries, their states, and cached data. It's invaluable for debugging and understanding how TanStack Query manages your data.",[15,22245,22247],{"id":22246},"common-patterns","Common Patterns",[31,22249,22251],{"id":22250},"dependent-queries","Dependent Queries",[20,22253,22254],{},"Sometimes you need to fetch data based on previous query results:",[47,22256,22259],{"className":20349,"code":22257,"filename":22258,"language":20351,"meta":55,"style":55},"function UserPosts({ userId }: { userId: string }) {\n  const { data: user } = useQuery({\n    queryKey: ['user', userId],\n    queryFn: () => fetchUser(userId),\n  });\n\n  const { data: posts } = useQuery({\n    queryKey: ['posts', user?.id],\n    queryFn: () => fetchUserPosts(user!.id),\n    enabled: !!user, \u002F\u002F Only run when user is available\n  });\n\n  return \u003CPostsList posts={posts} \u002F>;\n}\n","DependentQueries.tsx",[39,22260,22261,22266,22271,22275,22279,22283,22287,22292,22297,22302,22307,22311,22315,22320],{"__ignoreMap":55},[250,22262,22263],{"class":252,"line":253},[250,22264,22265],{},"function UserPosts({ userId }: { userId: string }) {\n",[250,22267,22268],{"class":252,"line":113},[250,22269,22270],{},"  const { data: user } = useQuery({\n",[250,22272,22273],{"class":252,"line":110},[250,22274,21404],{},[250,22276,22277],{"class":252,"line":269},[250,22278,21409],{},[250,22280,22281],{"class":252,"line":275},[250,22282,6749],{},[250,22284,22285],{"class":252,"line":281},[250,22286,795],{"emptyLinePlaceholder":129},[250,22288,22289],{"class":252,"line":287},[250,22290,22291],{},"  const { data: posts } = useQuery({\n",[250,22293,22294],{"class":252,"line":293},[250,22295,22296],{},"    queryKey: ['posts', user?.id],\n",[250,22298,22299],{"class":252,"line":299},[250,22300,22301],{},"    queryFn: () => fetchUserPosts(user!.id),\n",[250,22303,22304],{"class":252,"line":132},[250,22305,22306],{},"    enabled: !!user, \u002F\u002F Only run when user is available\n",[250,22308,22309],{"class":252,"line":310},[250,22310,6749],{},[250,22312,22313],{"class":252,"line":316},[250,22314,795],{"emptyLinePlaceholder":129},[250,22316,22317],{"class":252,"line":322},[250,22318,22319],{},"  return \u003CPostsList posts={posts} \u002F>;\n",[250,22321,22322],{"class":252,"line":328},[250,22323,991],{},[31,22325,21201],{"id":22326},"prefetching",[20,22328,22329],{},"Improve perceived performance by prefetching data:",[47,22331,22334],{"className":20349,"code":22332,"filename":22333,"language":20351,"meta":55,"style":55},"function PostList() {\n  const queryClient = useQueryClient();\n\n  const { data: posts } = useQuery({\n    queryKey: ['posts'],\n    queryFn: fetchPosts,\n  });\n\n  const handleMouseEnter = (postId: string) => {\n    queryClient.prefetchQuery({\n      queryKey: ['post', postId],\n      queryFn: () => fetchPost(postId),\n    });\n  };\n\n  return (\n    \u003Cdiv>\n      {posts?.map(post => (\n        \u003Cdiv \n          key={post.id}\n          onMouseEnter={() => handleMouseEnter(post.id)}\n        >\n          \u003CLink to={`\u002Fposts\u002F${post.id}`}>{post.title}\u003C\u002FLink>\n        \u003C\u002Fdiv>\n      ))}\n    \u003C\u002Fdiv>\n  );\n}\n","Prefetching.tsx",[39,22335,22336,22341,22345,22349,22353,22358,22363,22367,22371,22376,22381,22386,22391,22395,22399,22403,22407,22411,22416,22421,22426,22431,22436,22441,22446,22451,22455,22459],{"__ignoreMap":55},[250,22337,22338],{"class":252,"line":253},[250,22339,22340],{},"function PostList() {\n",[250,22342,22343],{"class":252,"line":113},[250,22344,21526],{},[250,22346,22347],{"class":252,"line":110},[250,22348,795],{"emptyLinePlaceholder":129},[250,22350,22351],{"class":252,"line":269},[250,22352,22291],{},[250,22354,22355],{"class":252,"line":275},[250,22356,22357],{},"    queryKey: ['posts'],\n",[250,22359,22360],{"class":252,"line":281},[250,22361,22362],{},"    queryFn: fetchPosts,\n",[250,22364,22365],{"class":252,"line":287},[250,22366,6749],{},[250,22368,22369],{"class":252,"line":293},[250,22370,795],{"emptyLinePlaceholder":129},[250,22372,22373],{"class":252,"line":299},[250,22374,22375],{},"  const handleMouseEnter = (postId: string) => {\n",[250,22377,22378],{"class":252,"line":132},[250,22379,22380],{},"    queryClient.prefetchQuery({\n",[250,22382,22383],{"class":252,"line":310},[250,22384,22385],{},"      queryKey: ['post', postId],\n",[250,22387,22388],{"class":252,"line":316},[250,22389,22390],{},"      queryFn: () => fetchPost(postId),\n",[250,22392,22393],{"class":252,"line":322},[250,22394,1547],{},[250,22396,22397],{"class":252,"line":328},[250,22398,1161],{},[250,22400,22401],{"class":252,"line":334},[250,22402,795],{"emptyLinePlaceholder":129},[250,22404,22405],{"class":252,"line":340},[250,22406,21288],{},[250,22408,22409],{"class":252,"line":346},[250,22410,21440],{},[250,22412,22413],{"class":252,"line":352},[250,22414,22415],{},"      {posts?.map(post => (\n",[250,22417,22418],{"class":252,"line":358},[250,22419,22420],{},"        \u003Cdiv \n",[250,22422,22423],{"class":252,"line":364},[250,22424,22425],{},"          key={post.id}\n",[250,22427,22428],{"class":252,"line":370},[250,22429,22430],{},"          onMouseEnter={() => handleMouseEnter(post.id)}\n",[250,22432,22433],{"class":252,"line":376},[250,22434,22435],{},"        >\n",[250,22437,22438],{"class":252,"line":382},[250,22439,22440],{},"          \u003CLink to={`\u002Fposts\u002F${post.id}`}>{post.title}\u003C\u002FLink>\n",[250,22442,22443],{"class":252,"line":388},[250,22444,22445],{},"        \u003C\u002Fdiv>\n",[250,22447,22448],{"class":252,"line":393},[250,22449,22450],{},"      ))}\n",[250,22452,22453],{"class":252,"line":399},[250,22454,21455],{},[250,22456,22457],{"class":252,"line":405},[250,22458,2859],{},[250,22460,22461],{"class":252,"line":410},[250,22462,991],{},[72,22464],{},[15,22466,3352],{"id":3351},[20,22468,22469],{},"TanStack Query has fundamentally changed how developers approach data fetching and state management in modern applications. By providing intelligent caching, automatic background updates, and a simple yet powerful API, it eliminates much of the boilerplate code traditionally associated with server state management.",[20,22471,22472],{},"Whether you're building a small application or a large-scale enterprise system, TanStack Query's flexibility and performance optimizations make it an excellent choice. The library's active community, comprehensive documentation, and framework-agnostic approach ensure it will remain a valuable tool in your development arsenal.",[20,22474,22475],{},"Start small with basic queries and gradually adopt advanced features like optimistic updates and prefetching as your application grows. Your users will appreciate the snappier experience, and your team will benefit from cleaner, more maintainable code.",[20,22477,22478],{},"Happy querying!",[500,22480,22481],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":55,"searchDepth":110,"depth":110,"links":22483},[22484,22485,22486,22487,22488,22489,22492,22493,22494,22495,22496,22497],{"id":21160,"depth":113,"text":21161},{"id":21217,"depth":113,"text":21218},{"id":21250,"depth":113,"text":21251},{"id":21314,"depth":113,"text":21315},{"id":21476,"depth":113,"text":21477},{"id":21670,"depth":113,"text":21671,"children":22490},[22491],{"id":21798,"depth":110,"text":21799},{"id":21805,"depth":113,"text":21806},{"id":21957,"depth":113,"text":21958},{"id":22014,"depth":113,"text":22015},{"id":22186,"depth":113,"text":22187},{"id":22250,"depth":113,"text":22251},{"id":22326,"depth":113,"text":21201},"2026-02-05","Discover how TanStack Query revolutionizes data fetching in React applications with powerful caching, synchronization, and state management capabilities.",{"type":12,"value":22501},[22502,22504],[15,22503,541],{"id":540},[20,22505,21147],{},[22507,22508,22509,22510,22511,8234],"tanstack query","react query","data fetching","caching","react",{},"\u002Fblog\u002Ftanstack-query",{"title":21139,"description":22499},"blog\u002Ftanstack-query","otrAfik85HDuJo-p8O4tK0JRdsM8c8jGeuWVLKo6pxg",{"id":22518,"title":22519,"author":22520,"body":22521,"canonical":115,"categories":115,"date":12959,"description":23302,"excerpt":23303,"extension":118,"img":23323,"keywords":23324,"language":3510,"meta":23326,"navigation":129,"ogImage":115,"path":23327,"rating":275,"readTime":132,"seo":23328,"stem":23329,"tag":3515,"__hash__":23330},"blog\u002Fblog\u002Ftanstack-router.md","Mastering TanStack Router: Type-Safe Routing for Modern Web Apps",{"name":8,"img":10,"website":535},{"type":12,"value":22522,"toc":23285},[22523,22525,22528,22534,22545,22552,22554,22558,22561,22575,22578,22587,22594,22596,22600,22603,22620,22623,22637,22640,22642,22644,22647,22730,22733,22737,22740,22826,22829,22833,22836,22929,22933,22949,22952,22956,22959,23102,23104,23115,23119,23122,23126,23129,23163,23166,23177,23180,23184,23187,23193,23196,23207,23210,23214,23217,23230,23233,23236,23240,23243,23257,23260,23271,23273,23276,23279,23282],[15,22524,541],{"id":540},[20,22526,22527],{},"Routing has always been one of those “it works… until it doesn’t” parts of web development. As applications grow, routes become harder to reason about, parameters drift out of sync, and refactors turn into a game of whack-a-mole.",[20,22529,22530,22533],{},[546,22531,22532],{},"TanStack Router"," was created to solve exactly that problem.",[20,22535,22536,22537,22540,22541,22544],{},"Built with ",[546,22538,22539],{},"type safety first",", TanStack Router flips the traditional routing model on its head. Instead of hoping your routes, params, loaders, and links line up, the router ",[3587,22542,22543],{},"guarantees"," they do—at compile time.",[20,22546,22547,22548,22551],{},"In this post, we’ll explore ",[546,22549,22550],{},"what makes TanStack Router different",", why it matters, and how to use it effectively in real-world applications.",[15,22553,748],{"id":747},[31,22555,22557],{"id":22556},"why-routing-needed-a-rethink","Why Routing Needed a Rethink",[20,22559,22560],{},"Most routers share a few common pain points:",[561,22562,22563,22566,22569,22572],{},[564,22564,22565],{},"Route params are strings (until runtime)",[564,22567,22568],{},"Loaders and components drift apart",[564,22570,22571],{},"Refactors break links silently",[564,22573,22574],{},"Nested routing becomes fragile",[20,22576,22577],{},"These issues don’t show up on day one—but they absolutely show up at scale.",[24,22579,22580],{"type":631},[20,22581,22582,22583,22586],{},"TanStack Router treats routing as a ",[3587,22584,22585],{},"data problem",", not just a URL-matching problem.",[20,22588,22589,22590,22593],{},"Instead of defining routes and hoping everything connects correctly, TanStack Router builds a ",[546,22591,22592],{},"strongly-typed route tree"," that TypeScript understands end to end.",[72,22595],{},[31,22597,22599],{"id":22598},"core-philosophy-of-tanstack-router","Core Philosophy of TanStack Router",[20,22601,22602],{},"At its core, TanStack Router is built around three ideas:",[2922,22604,22605,22610,22615],{},[564,22606,22607],{},[546,22608,22609],{},"Type safety everywhere",[564,22611,22612],{},[546,22613,22614],{},"Colocation of route logic",[564,22616,22617],{},[546,22618,22619],{},"Data-first routing",[20,22621,22622],{},"This means:",[561,22624,22625,22628,22631,22634],{},[564,22626,22627],{},"Routes know their params",[564,22629,22630],{},"Loaders know their return types",[564,22632,22633],{},"Links know where they’re going",[564,22635,22636],{},"Components know what data they receive",[20,22638,22639],{},"No guessing. No runtime surprises.",[72,22641],{},[31,22643,21251],{"id":21250},[20,22645,22646],{},"Here’s a minimal example of defining a route.",[47,22648,22651],{"className":1010,"code":22649,"filename":22650,"language":1012,"meta":55,"style":55},"import { createRouter, createRootRoute } from '@tanstack\u002Freact-router'\n\nconst rootRoute = createRootRoute({\n  component: () => \u003COutlet \u002F>\n})\n\nexport const router = createRouter({\n  routeTree: rootRoute,\n})\n","router.ts",[39,22652,22653,22665,22669,22683,22701,22705,22709,22721,22726],{"__ignoreMap":55},[250,22654,22655,22657,22660,22662],{"class":252,"line":253},[250,22656,1763],{"class":786},[250,22658,22659],{"class":912}," { createRouter, createRootRoute } ",[250,22661,1769],{"class":786},[250,22663,22664],{"class":782}," '@tanstack\u002Freact-router'\n",[250,22666,22667],{"class":252,"line":113},[250,22668,795],{"emptyLinePlaceholder":129},[250,22670,22671,22673,22676,22678,22681],{"class":252,"line":110},[250,22672,1181],{"class":786},[250,22674,22675],{"class":778}," rootRoute",[250,22677,1187],{"class":786},[250,22679,22680],{"class":774}," createRootRoute",[250,22682,1028],{"class":912},[250,22684,22685,22688,22691,22693,22696,22699],{"class":252,"line":269},[250,22686,22687],{"class":774},"  component",[250,22689,22690],{"class":912},": () ",[250,22692,1115],{"class":786},[250,22694,22695],{"class":912}," \u003C",[250,22697,22698],{"class":774},"Outlet",[250,22700,17047],{"class":912},[250,22702,22703],{"class":252,"line":275},[250,22704,474],{"class":912},[250,22706,22707],{"class":252,"line":281},[250,22708,795],{"emptyLinePlaceholder":129},[250,22710,22711,22714,22716,22719],{"class":252,"line":287},[250,22712,22713],{"class":912},"export const router ",[250,22715,1416],{"class":786},[250,22717,22718],{"class":774}," createRouter",[250,22720,1028],{"class":912},[250,22722,22723],{"class":252,"line":293},[250,22724,22725],{"class":912},"  routeTree: rootRoute,\n",[250,22727,22728],{"class":252,"line":299},[250,22729,474],{"class":912},[20,22731,22732],{},"Already, TypeScript understands your route tree—even before adding child routes.",[31,22734,22736],{"id":22735},"defining-routes-with-type-safety","Defining Routes with Type Safety",[20,22738,22739],{},"Now let’s define a real route.",[47,22741,22743],{"className":1010,"code":22742,"language":1012,"meta":55,"style":55},"import { createFileRoute } from '@tanstack\u002Freact-router'\n\nexport const Route = createFileRoute('\u002F')({\n  component: HomePage,\n})\n\nfunction HomePage() {\n  return \u003Ch1>Welcome Home\u003C\u002Fh1>\n}\n",[39,22744,22745,22756,22760,22782,22787,22791,22795,22805,22822],{"__ignoreMap":55},[250,22746,22747,22749,22752,22754],{"class":252,"line":253},[250,22748,1763],{"class":786},[250,22750,22751],{"class":912}," { createFileRoute } ",[250,22753,1769],{"class":786},[250,22755,22664],{"class":782},[250,22757,22758],{"class":252,"line":113},[250,22759,795],{"emptyLinePlaceholder":129},[250,22761,22762,22764,22766,22769,22771,22774,22776,22779],{"class":252,"line":110},[250,22763,1019],{"class":786},[250,22765,4438],{"class":786},[250,22767,22768],{"class":778}," Route",[250,22770,1187],{"class":786},[250,22772,22773],{"class":774}," createFileRoute",[250,22775,1434],{"class":912},[250,22777,22778],{"class":782},"'\u002F'",[250,22780,22781],{"class":912},")({\n",[250,22783,22784],{"class":252,"line":269},[250,22785,22786],{"class":912},"  component: HomePage,\n",[250,22788,22789],{"class":252,"line":275},[250,22790,474],{"class":912},[250,22792,22793],{"class":252,"line":281},[250,22794,795],{"emptyLinePlaceholder":129},[250,22796,22797,22800,22803],{"class":252,"line":287},[250,22798,22799],{"class":786},"function",[250,22801,22802],{"class":774}," HomePage",[250,22804,1851],{"class":912},[250,22806,22807,22809,22811,22813,22816,22818,22820],{"class":252,"line":293},[250,22808,1123],{"class":786},[250,22810,22695],{"class":912},[250,22812,15],{"class":774},[250,22814,22815],{"class":912},">Welcome Home",[250,22817,13209],{"class":786},[250,22819,15],{"class":912},[250,22821,13111],{"class":786},[250,22823,22824],{"class":252,"line":299},[250,22825,991],{"class":912},[20,22827,22828],{},"No string-based route definitions scattered across your app. The route is the source of truth.",[31,22830,22832],{"id":22831},"route-params-that-dont-lie","Route Params That Don’t Lie",[20,22834,22835],{},"Here’s where TanStack Router really shines.",[47,22837,22839],{"className":1010,"code":22838,"language":1012,"meta":55,"style":55},"export const Route = createFileRoute('\u002Fusers\u002F$userId')({\n  component: UserPage,\n})\n\nfunction UserPage() {\n  const { userId } = Route.useParams()\n  return \u003Cdiv>User ID: {userId}\u003C\u002Fdiv>\n}\n",[39,22840,22841,22860,22865,22869,22873,22882,22902,22925],{"__ignoreMap":55},[250,22842,22843,22845,22847,22849,22851,22853,22855,22858],{"class":252,"line":253},[250,22844,1019],{"class":786},[250,22846,4438],{"class":786},[250,22848,22768],{"class":778},[250,22850,1187],{"class":786},[250,22852,22773],{"class":774},[250,22854,1434],{"class":912},[250,22856,22857],{"class":782},"'\u002Fusers\u002F$userId'",[250,22859,22781],{"class":912},[250,22861,22862],{"class":252,"line":113},[250,22863,22864],{"class":912},"  component: UserPage,\n",[250,22866,22867],{"class":252,"line":110},[250,22868,474],{"class":912},[250,22870,22871],{"class":252,"line":269},[250,22872,795],{"emptyLinePlaceholder":129},[250,22874,22875,22877,22880],{"class":252,"line":275},[250,22876,22799],{"class":786},[250,22878,22879],{"class":774}," UserPage",[250,22881,1851],{"class":912},[250,22883,22884,22886,22888,22890,22892,22894,22897,22900],{"class":252,"line":281},[250,22885,1455],{"class":786},[250,22887,7768],{"class":912},[250,22889,14401],{"class":778},[250,22891,11640],{"class":912},[250,22893,1416],{"class":786},[250,22895,22896],{"class":912}," Route.",[250,22898,22899],{"class":774},"useParams",[250,22901,4861],{"class":912},[250,22903,22904,22906,22908,22910,22913,22916,22919,22921,22923],{"class":252,"line":287},[250,22905,1123],{"class":786},[250,22907,22695],{"class":912},[250,22909,16946],{"class":774},[250,22911,22912],{"class":912},">User ",[250,22914,22915],{"class":778},"ID",[250,22917,22918],{"class":912},": {userId}",[250,22920,13209],{"class":786},[250,22922,16946],{"class":912},[250,22924,13111],{"class":786},[250,22926,22927],{"class":252,"line":293},[250,22928,991],{"class":912},[2459,22930,22932],{"id":22931},"whats-different-here","What’s Different Here?",[561,22934,22935,22940,22943,22946],{},[564,22936,22937,22939],{},[39,22938,14401],{}," is typed",[564,22941,22942],{},"You can’t forget it",[564,22944,22945],{},"You can’t mistype it",[564,22947,22948],{},"You can’t pass the wrong param shape",[20,22950,22951],{},"TypeScript will stop you before the app runs.",[31,22953,22955],{"id":22954},"loaders-as-first-class-citizens","Loaders as First-Class Citizens",[20,22957,22958],{},"TanStack Router treats data loading as part of routing—not an afterthought.",[47,22960,22962],{"className":1010,"code":22961,"language":1012,"meta":55,"style":55},"export const Route = createFileRoute('\u002Fusers\u002F$userId')({\n  loader: async ({ params }) => {\n    return fetch(`\u002Fapi\u002Fusers\u002F${params.userId}`).then(res => res.json())\n  },\n  component: UserPage,\n})\n\nfunction UserPage() {\n  const user = Route.useLoaderData()\n  return \u003Cdiv>{user.name}\u003C\u002Fdiv>\n}\n",[39,22963,22964,22982,23003,23042,23046,23050,23054,23058,23066,23081,23098],{"__ignoreMap":55},[250,22965,22966,22968,22970,22972,22974,22976,22978,22980],{"class":252,"line":253},[250,22967,1019],{"class":786},[250,22969,4438],{"class":786},[250,22971,22768],{"class":778},[250,22973,1187],{"class":786},[250,22975,22773],{"class":774},[250,22977,1434],{"class":912},[250,22979,22857],{"class":782},[250,22981,22781],{"class":912},[250,22983,22984,22987,22989,22991,22994,22997,22999,23001],{"class":252,"line":113},[250,22985,22986],{"class":774},"  loader",[250,22988,921],{"class":912},[250,22990,1437],{"class":786},[250,22992,22993],{"class":912}," ({ ",[250,22995,22996],{"class":1370},"params",[250,22998,12305],{"class":912},[250,23000,1115],{"class":786},[250,23002,1118],{"class":912},[250,23004,23005,23007,23009,23011,23014,23016,23018,23020,23022,23024,23026,23028,23031,23034,23037,23039],{"class":252,"line":110},[250,23006,14581],{"class":786},[250,23008,2077],{"class":774},[250,23010,1434],{"class":912},[250,23012,23013],{"class":782},"`\u002Fapi\u002Fusers\u002F${",[250,23015,22996],{"class":912},[250,23017,2230],{"class":782},[250,23019,14401],{"class":912},[250,23021,2355],{"class":782},[250,23023,2380],{"class":912},[250,23025,2837],{"class":774},[250,23027,1434],{"class":912},[250,23029,23030],{"class":1370},"res",[250,23032,23033],{"class":786}," =>",[250,23035,23036],{"class":912}," res.",[250,23038,905],{"class":774},[250,23040,23041],{"class":912},"())\n",[250,23043,23044],{"class":252,"line":269},[250,23045,1048],{"class":912},[250,23047,23048],{"class":252,"line":275},[250,23049,22864],{"class":912},[250,23051,23052],{"class":252,"line":281},[250,23053,474],{"class":912},[250,23055,23056],{"class":252,"line":287},[250,23057,795],{"emptyLinePlaceholder":129},[250,23059,23060,23062,23064],{"class":252,"line":293},[250,23061,22799],{"class":786},[250,23063,22879],{"class":774},[250,23065,1851],{"class":912},[250,23067,23068,23070,23072,23074,23076,23079],{"class":252,"line":299},[250,23069,1455],{"class":786},[250,23071,14943],{"class":778},[250,23073,1187],{"class":786},[250,23075,22896],{"class":912},[250,23077,23078],{"class":774},"useLoaderData",[250,23080,4861],{"class":912},[250,23082,23083,23085,23087,23089,23092,23094,23096],{"class":252,"line":132},[250,23084,1123],{"class":786},[250,23086,22695],{"class":912},[250,23088,16946],{"class":774},[250,23090,23091],{"class":912},">{user.name}",[250,23093,13209],{"class":786},[250,23095,16946],{"class":912},[250,23097,13111],{"class":786},[250,23099,23100],{"class":252,"line":310},[250,23101,991],{"class":912},[2459,23103,12902],{"id":12901},[561,23105,23106,23109,23112],{},[564,23107,23108],{},"Loader data is typed",[564,23110,23111],{},"Components can’t access data that doesn’t exist",[564,23113,23114],{},"Refactors stay safe",[31,23116,23118],{"id":23117},"tanstack-router-tanstack-query","TanStack Router + TanStack Query",[20,23120,23121],{},"When paired with TanStack Query, loaders become even more powerful—combining caching, background refetching, and route awareness.",[31,23123,23125],{"id":23124},"navigation-without-fear","Navigation Without Fear",[20,23127,23128],{},"Links are another classic source of bugs. TanStack Router eliminates them.",[47,23130,23132],{"className":20349,"code":23131,"language":20351,"meta":55,"style":55},"\u003CLink\n  to=\"\u002Fusers\u002F$userId\"\n  params={{ userId: '42' }}\n>\n  View User\n\u003C\u002FLink>\n",[39,23133,23134,23139,23144,23149,23153,23158],{"__ignoreMap":55},[250,23135,23136],{"class":252,"line":253},[250,23137,23138],{},"\u003CLink\n",[250,23140,23141],{"class":252,"line":113},[250,23142,23143],{},"  to=\"\u002Fusers\u002F$userId\"\n",[250,23145,23146],{"class":252,"line":110},[250,23147,23148],{},"  params={{ userId: '42' }}\n",[250,23150,23151],{"class":252,"line":269},[250,23152,13111],{},[250,23154,23155],{"class":252,"line":275},[250,23156,23157],{},"  View User\n",[250,23159,23160],{"class":252,"line":281},[250,23161,23162],{},"\u003C\u002FLink>\n",[20,23164,23165],{},"If you:",[561,23167,23168,23171,23174],{},[564,23169,23170],{},"Forget a param ❌",[564,23172,23173],{},"Misspell a route ❌",[564,23175,23176],{},"Pass the wrong param type ❌",[20,23178,23179],{},"TypeScript catches it instantly.",[31,23181,23183],{"id":23182},"nested-routes-done-right","Nested Routes Done Right",[20,23185,23186],{},"Nested routing is simple, explicit, and predictable.",[47,23188,23191],{"className":23189,"code":23190,"language":52},[50],"\u002Fusers\n\u002Fusers\u002F$userId\n\u002Fusers\u002F$userId\u002Fsettings\n",[39,23192,23190],{"__ignoreMap":55},[20,23194,23195],{},"Each route:",[561,23197,23198,23201,23204],{},[564,23199,23200],{},"Knows its parent",[564,23202,23203],{},"Inherits context safely",[564,23205,23206],{},"Composes layouts naturally",[20,23208,23209],{},"No magic. No hidden behavior.",[31,23211,23213],{"id":23212},"how-tanstack-router-fits-modern-stacks","How TanStack Router Fits Modern Stacks",[20,23215,23216],{},"TanStack Router pairs especially well with:",[561,23218,23219,23222,23224,23227],{},[564,23220,23221],{},"TanStack Query",[564,23223,11130],{},[564,23225,23226],{},"Server-first architectures",[564,23228,23229],{},"Typed backends",[20,23231,23232],{},"If you care about refactoring confidence and long-term maintainability, TanStack Router pays for itself very quickly.",[20,23234,23235],{},"It’s not about being flashy—it’s about eliminating entire classes of bugs.",[31,23237,23239],{"id":23238},"when-should-you-use-tanstack-router","When Should You Use TanStack Router?",[20,23241,23242],{},"TanStack Router is ideal if:",[561,23244,23245,23248,23251,23254],{},[564,23246,23247],{},"You use TypeScript seriously",[564,23249,23250],{},"Your app has complex routing or data needs",[564,23252,23253],{},"You value refactor safety",[564,23255,23256],{},"You’re building long-lived applications",[20,23258,23259],{},"It might be overkill for:",[561,23261,23262,23265,23268],{},[564,23263,23264],{},"Tiny apps",[564,23266,23267],{},"One-page demos",[564,23269,23270],{},"Projects without TypeScript",[15,23272,3352],{"id":3351},[20,23274,23275],{},"TanStack Router isn’t just another router—it’s a rethinking of what routing should be in modern web applications. By embracing type safety, colocation, and data-first design, it gives developers something rare: confidence.",[20,23277,23278],{},"Confidence to refactor.\nConfidence to scale.\nConfidence that your routes won’t betray you at runtime.",[20,23280,23281],{},"If you’ve ever been burned by routing bugs, TanStack Router is absolutely worth your time.",[500,23283,23284],{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":55,"searchDepth":110,"depth":110,"links":23286},[23287,23288,23289,23290,23291,23294,23297,23298,23299,23300,23301],{"id":22556,"depth":113,"text":22557},{"id":22598,"depth":113,"text":22599},{"id":21250,"depth":113,"text":21251},{"id":22735,"depth":113,"text":22736},{"id":22831,"depth":113,"text":22832,"children":23292},[23293],{"id":22931,"depth":110,"text":22932},{"id":22954,"depth":113,"text":22955,"children":23295},[23296],{"id":12901,"depth":110,"text":12902},{"id":23117,"depth":113,"text":23118},{"id":23124,"depth":113,"text":23125},{"id":23182,"depth":113,"text":23183},{"id":23212,"depth":113,"text":23213},{"id":23238,"depth":113,"text":23239},"A deep dive into TanStack Router, exploring why type-safe routing matters, how it compares to traditional routers, and how to build scalable applications with confidence.",{"type":12,"value":23304},[23305,23307,23309,23313,23319],[15,23306,541],{"id":540},[20,23308,22527],{},[20,23310,23311,22533],{},[546,23312,22532],{},[20,23314,22536,23315,22540,23317,22544],{},[546,23316,22539],{},[3587,23318,22543],{},[20,23320,22547,23321,22551],{},[546,23322,22550],{},"https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1555066931-4365d14bab8c",[11332,23325,8234,22511,10986],"tanstack router",{},"\u002Fblog\u002Ftanstack-router",{"title":22519,"description":23302},"blog\u002Ftanstack-router","PWnsv5PO_qkfN_djpIbv3v8k1z6BPhhRM9l-lLwmDVI",{"id":23332,"title":23333,"author":23334,"body":23335,"canonical":115,"categories":115,"date":24446,"description":24447,"excerpt":24448,"extension":118,"img":12028,"keywords":24464,"language":3510,"meta":24466,"navigation":129,"ogImage":115,"path":24467,"rating":275,"readTime":132,"seo":24468,"stem":24469,"tag":3515,"__hash__":24470},"blog\u002Fblog\u002Funjs-packages.md","Using Core UnJS Packages to Build a Modern JavaScript Application",{"name":8,"img":10,"website":535},{"type":12,"value":23336,"toc":24426},[23337,23339,23352,23359,23361,23368,23370,23374,23377,23383,23392,23395,23484,23493,23495,23502,23512,23569,23575,23577,23584,23593,23645,23651,23653,23660,23669,23672,23780,23786,23788,23795,23804,23874,23880,23882,23889,23892,23942,23948,23950,23960,23981,24058,24064,24066,24070,24073,24128,24131,24133,24137,24140,24388,24398,24400,24402,24416,24423],[15,23338,541],{"id":540},[20,23340,23341,23342,23345,23346,23349,23350],{},"The ",[546,23343,23344],{},"UnJS ecosystem"," is a large collection of focused, composable JavaScript utilities and tools created to empower developers with performant, agnostic building blocks. Instead of monolithic frameworks with opinionated APIs, UnJS packages are ",[546,23347,23348],{},"small, well-scoped, and interoperable"," — letting you pick exactly what you need for your app’s architecture and tooling. ",[3540,23351,3543],{"index":3542},[20,23353,23354,23355,23358],{},"In this post, we’ll focus on the ",[546,23356,23357],{},"main UnJS packages"," you’d use to build a real-world application and how they integrate together.",[15,23360,748],{"id":747},[24,23362,23363],{"type":631},[20,23364,23365,23366],{},"UnJS packages follow a Unix philosophy — each one does one thing well and can be composed with others to form a complete solution. ",[3540,23367,3570],{"index":1198},[72,23369],{},[31,23371,23373],{"id":23372},"key-unjs-packages-for-your-application","Key UnJS Packages for Your Application",[20,23375,23376],{},"Here’s a curated list of the most impactful UnJS packages you’ll likely use in a modern JavaScript\u002FTypeScript application:",[2459,23378,23380,23382],{"id":23379},"nitro-a-universal-server-engine",[546,23381,555],{}," — A Universal Server Engine",[20,23384,23385,23387,23388,23391],{},[39,23386,3504],{}," lets you build ",[546,23389,23390],{},"fast, portable servers"," that run on Node.js, Deno, Bun, Cloudflare Workers, and more.",[20,23393,23394],{},"Use Nitro to create API routes and server logic without worrying about runtime differences:",[47,23396,23400],{"className":23397,"code":23398,"language":23399,"meta":55,"style":55},"language-js shiki shiki-themes github-light github-dark","\u002F\u002F server\u002Findex.ts\nimport { createNitro } from \"nitro\";\n\nexport default createNitro({\n  handlers: [\n    {\n      route: \"\u002Fapi\u002Fhello\",\n      handler: () => ({ message: \"Hello from Nitro!\" })\n    }\n  ]\n});\n","js",[39,23401,23402,23407,23421,23425,23436,23441,23446,23456,23472,23476,23480],{"__ignoreMap":55},[250,23403,23404],{"class":252,"line":253},[250,23405,23406],{"class":768},"\u002F\u002F server\u002Findex.ts\n",[250,23408,23409,23411,23414,23416,23419],{"class":252,"line":113},[250,23410,1763],{"class":786},[250,23412,23413],{"class":912}," { createNitro } ",[250,23415,1769],{"class":786},[250,23417,23418],{"class":782}," \"nitro\"",[250,23420,1379],{"class":912},[250,23422,23423],{"class":252,"line":110},[250,23424,795],{"emptyLinePlaceholder":129},[250,23426,23427,23429,23431,23434],{"class":252,"line":269},[250,23428,1019],{"class":786},[250,23430,1022],{"class":786},[250,23432,23433],{"class":774}," createNitro",[250,23435,1028],{"class":912},[250,23437,23438],{"class":252,"line":275},[250,23439,23440],{"class":912},"  handlers: [\n",[250,23442,23443],{"class":252,"line":281},[250,23444,23445],{"class":912},"    {\n",[250,23447,23448,23451,23454],{"class":252,"line":287},[250,23449,23450],{"class":912},"      route: ",[250,23452,23453],{"class":782},"\"\u002Fapi\u002Fhello\"",[250,23455,927],{"class":912},[250,23457,23458,23461,23463,23465,23468,23470],{"class":252,"line":293},[250,23459,23460],{"class":774},"      handler",[250,23462,22690],{"class":912},[250,23464,1115],{"class":786},[250,23466,23467],{"class":912}," ({ message: ",[250,23469,11562],{"class":782},[250,23471,4599],{"class":912},[250,23473,23474],{"class":252,"line":299},[250,23475,3684],{"class":912},[250,23477,23478],{"class":252,"line":132},[250,23479,19356],{"class":912},[250,23481,23482],{"class":252,"line":310},[250,23483,1077],{"class":912},[20,23485,23486,23487,2390],{},"Nitro becomes the backbone of your backend layer, powering APIs consistently across environments. (",[203,23488,23492],{"href":23489,"rel":23490,"title":23491},"https:\u002F\u002Funjs.io\u002Fpackages\u002F",[207],"Packages · UnJS","UnJS",[72,23494],{},[2459,23496,23498,23501],{"id":23497},"c12-smart-configuration-loader",[546,23499,23500],{},"c12"," — Smart Configuration Loader",[20,23503,23504,23506,23507,2390],{},[39,23505,23500],{}," simplifies loading configuration from multiple sources (JSON, JSONC, YAML, TOML, .env, RC files) and merges them intelligently. This is useful for environment configs, feature flags, and CLI apps. (",[203,23508,23492],{"href":23509,"rel":23510,"title":23511},"https:\u002F\u002Funjs.io\u002Fpackages\u002Fc12",[207],"c12 · Packages · UnJS",[47,23513,23515],{"className":1010,"code":23514,"language":1012,"meta":55,"style":55},"import { loadConfig } from \"c12\";\n\nconst { config } = await loadConfig({});\nconsole.log(\"App Config:\", config);\n",[39,23516,23517,23531,23535,23555],{"__ignoreMap":55},[250,23518,23519,23521,23524,23526,23529],{"class":252,"line":253},[250,23520,1763],{"class":786},[250,23522,23523],{"class":912}," { loadConfig } ",[250,23525,1769],{"class":786},[250,23527,23528],{"class":782}," \"c12\"",[250,23530,1379],{"class":912},[250,23532,23533],{"class":252,"line":113},[250,23534,795],{"emptyLinePlaceholder":129},[250,23536,23537,23539,23541,23543,23545,23547,23549,23552],{"class":252,"line":110},[250,23538,1181],{"class":786},[250,23540,7768],{"class":912},[250,23542,227],{"class":778},[250,23544,11640],{"class":912},[250,23546,1416],{"class":786},[250,23548,1463],{"class":786},[250,23550,23551],{"class":774}," loadConfig",[250,23553,23554],{"class":912},"({});\n",[250,23556,23557,23559,23561,23563,23566],{"class":252,"line":269},[250,23558,10954],{"class":912},[250,23560,1859],{"class":774},[250,23562,1434],{"class":912},[250,23564,23565],{"class":782},"\"App Config:\"",[250,23567,23568],{"class":912},", config);\n",[20,23570,23571,23572,2390],{},"It supports layering configs, environment overrides, and HMR during development — making config management a breeze. (",[203,23573,23492],{"href":23509,"rel":23574,"title":23511},[207],[72,23576],{},[2459,23578,23580,23583],{"id":23579},"ofetch-a-universal-fetch-api",[546,23581,23582],{},"ofetch"," — A Universal Fetch API",[20,23585,23586,23588,23589,23592],{},[39,23587,23582],{}," gives you a robust, cross-environment ",[39,23590,23591],{},"fetch"," API compatible with Node, browsers, and workers:",[47,23594,23596],{"className":1010,"code":23595,"language":1012,"meta":55,"style":55},"import { ofetch } from \"ofetch\";\n\nconst user = await ofetch(\"\u002Fapi\u002Fuser\");\nconsole.log(user);\n",[39,23597,23598,23612,23616,23636],{"__ignoreMap":55},[250,23599,23600,23602,23605,23607,23610],{"class":252,"line":253},[250,23601,1763],{"class":786},[250,23603,23604],{"class":912}," { ofetch } ",[250,23606,1769],{"class":786},[250,23608,23609],{"class":782}," \"ofetch\"",[250,23611,1379],{"class":912},[250,23613,23614],{"class":252,"line":113},[250,23615,795],{"emptyLinePlaceholder":129},[250,23617,23618,23620,23622,23624,23626,23629,23631,23634],{"class":252,"line":110},[250,23619,1181],{"class":786},[250,23621,14943],{"class":778},[250,23623,1187],{"class":786},[250,23625,1463],{"class":786},[250,23627,23628],{"class":774}," ofetch",[250,23630,1434],{"class":912},[250,23632,23633],{"class":782},"\"\u002Fapi\u002Fuser\"",[250,23635,1885],{"class":912},[250,23637,23638,23640,23642],{"class":252,"line":269},[250,23639,10954],{"class":912},[250,23641,1859],{"class":774},[250,23643,23644],{"class":912},"(user);\n",[20,23646,23647,23648,2390],{},"Use it in your client and server code without worrying about environment differences. (",[203,23649,23492],{"href":23489,"rel":23650,"title":23491},[207],[72,23652],{},[2459,23654,23656,23659],{"id":23655},"unplugin-plugin-system-across-bundlers",[546,23657,23658],{},"unplugin"," — Plugin System Across Bundlers",[20,23661,23662,23664,23665,23668],{},[39,23663,23658],{}," lets you write ",[546,23666,23667],{},"one plugin"," that works with Vite, Rollup, webpack, and esbuild — ideal for extending builds consistently.",[20,23670,23671],{},"For example, creating a custom import transform:",[47,23673,23675],{"className":23397,"code":23674,"language":23399,"meta":55,"style":55},"import Unplugin from \"unplugin\";\n\nexport default Unplugin(() => ({\n  name: \"example-plugin\",\n  transform(code) {\n    return code.replace(\u002FENV_VAR\u002Fg, JSON.stringify(process.env.NODE_ENV));\n  }\n}));\n",[39,23676,23677,23691,23695,23711,23720,23731,23771,23775],{"__ignoreMap":55},[250,23678,23679,23681,23684,23686,23689],{"class":252,"line":253},[250,23680,1763],{"class":786},[250,23682,23683],{"class":912}," Unplugin ",[250,23685,1769],{"class":786},[250,23687,23688],{"class":782}," \"unplugin\"",[250,23690,1379],{"class":912},[250,23692,23693],{"class":252,"line":113},[250,23694,795],{"emptyLinePlaceholder":129},[250,23696,23697,23699,23701,23704,23706,23708],{"class":252,"line":110},[250,23698,1019],{"class":786},[250,23700,1022],{"class":786},[250,23702,23703],{"class":774}," Unplugin",[250,23705,1112],{"class":912},[250,23707,1115],{"class":786},[250,23709,23710],{"class":912}," ({\n",[250,23712,23713,23715,23718],{"class":252,"line":269},[250,23714,4478],{"class":912},[250,23716,23717],{"class":782},"\"example-plugin\"",[250,23719,927],{"class":912},[250,23721,23722,23725,23727,23729],{"class":252,"line":275},[250,23723,23724],{"class":774},"  transform",[250,23726,1434],{"class":912},[250,23728,39],{"class":1370},[250,23730,1512],{"class":912},[250,23732,23733,23735,23738,23741,23743,23745,23749,23751,23754,23756,23759,23761,23764,23767,23769],{"class":252,"line":281},[250,23734,14581],{"class":786},[250,23736,23737],{"class":912}," code.",[250,23739,23740],{"class":774},"replace",[250,23742,1434],{"class":912},[250,23744,2293],{"class":782},[250,23746,23748],{"class":23747},"sA_wV","ENV_VAR",[250,23750,2293],{"class":782},[250,23752,23753],{"class":786},"g",[250,23755,7128],{"class":912},[250,23757,23758],{"class":778},"JSON",[250,23760,2230],{"class":912},[250,23762,23763],{"class":774},"stringify",[250,23765,23766],{"class":912},"(process.env.",[250,23768,15523],{"class":778},[250,23770,1593],{"class":912},[250,23772,23773],{"class":252,"line":287},[250,23774,986],{"class":912},[250,23776,23777],{"class":252,"line":293},[250,23778,23779],{"class":912},"}));\n",[20,23781,23782,23783,2390],{},"It’s data-agnostic and integrates with major build systems seamlessly. (",[203,23784,23492],{"href":23489,"rel":23785,"title":23491},[207],[72,23787],{},[2459,23789,23791,23794],{"id":23790},"jiti-runtime-typescript-and-esm-support",[546,23792,23793],{},"jiti"," — Runtime TypeScript and ESM Support",[20,23796,23797,23799,23800,23803],{},[39,23798,23793],{}," makes it easy to load ",[39,23801,23802],{},".ts"," modules at runtime without manual compilation:",[47,23805,23807],{"className":23397,"code":23806,"language":23399,"meta":55,"style":55},"import { createRequire } from \"module\";\nimport jiti from \"jiti\";\n\nconst requireTs = jiti(__filename);\nconst config = requireTs(\".\u002Fconfig.ts\").default;\n",[39,23808,23809,23823,23837,23841,23856],{"__ignoreMap":55},[250,23810,23811,23813,23816,23818,23821],{"class":252,"line":253},[250,23812,1763],{"class":786},[250,23814,23815],{"class":912}," { createRequire } ",[250,23817,1769],{"class":786},[250,23819,23820],{"class":782}," \"module\"",[250,23822,1379],{"class":912},[250,23824,23825,23827,23830,23832,23835],{"class":252,"line":113},[250,23826,1763],{"class":786},[250,23828,23829],{"class":912}," jiti ",[250,23831,1769],{"class":786},[250,23833,23834],{"class":782}," \"jiti\"",[250,23836,1379],{"class":912},[250,23838,23839],{"class":252,"line":110},[250,23840,795],{"emptyLinePlaceholder":129},[250,23842,23843,23845,23848,23850,23853],{"class":252,"line":269},[250,23844,1181],{"class":786},[250,23846,23847],{"class":778}," requireTs",[250,23849,1187],{"class":786},[250,23851,23852],{"class":774}," jiti",[250,23854,23855],{"class":912},"(__filename);\n",[250,23857,23858,23860,23862,23864,23866,23868,23871],{"class":252,"line":275},[250,23859,1181],{"class":786},[250,23861,8983],{"class":778},[250,23863,1187],{"class":786},[250,23865,23847],{"class":774},[250,23867,1434],{"class":912},[250,23869,23870],{"class":782},"\".\u002Fconfig.ts\"",[250,23872,23873],{"class":912},").default;\n",[20,23875,23876,23877,2390],{},"This is invaluable for quick prototyping, custom servers, and tooling that needs TypeScript support without build steps. (",[203,23878,23492],{"href":23489,"rel":23879,"title":23491},[207],[72,23881],{},[2459,23883,23885,23888],{"id":23884},"consola-elegant-console-logging",[546,23886,23887],{},"consola"," — Elegant Console Logging",[20,23890,23891],{},"A lightweight yet powerful wrapper around console logs with levels, formatting, and grouping:",[47,23893,23895],{"className":1010,"code":23894,"language":1012,"meta":55,"style":55},"import { consola } from \"consola\";\n\nconsola.info(\"Server started\");\nconsola.error(\"Unexpected error\");\n",[39,23896,23897,23911,23915,23929],{"__ignoreMap":55},[250,23898,23899,23901,23904,23906,23909],{"class":252,"line":253},[250,23900,1763],{"class":786},[250,23902,23903],{"class":912}," { consola } ",[250,23905,1769],{"class":786},[250,23907,23908],{"class":782}," \"consola\"",[250,23910,1379],{"class":912},[250,23912,23913],{"class":252,"line":113},[250,23914,795],{"emptyLinePlaceholder":129},[250,23916,23917,23920,23922,23924,23927],{"class":252,"line":110},[250,23918,23919],{"class":912},"consola.",[250,23921,631],{"class":774},[250,23923,1434],{"class":912},[250,23925,23926],{"class":782},"\"Server started\"",[250,23928,1885],{"class":912},[250,23930,23931,23933,23935,23937,23940],{"class":252,"line":269},[250,23932,23919],{"class":912},[250,23934,12297],{"class":774},[250,23936,1434],{"class":912},[250,23938,23939],{"class":782},"\"Unexpected error\"",[250,23941,1885],{"class":912},[20,23943,23944,23945,2390],{},"It improves readability of logs in production and development environments. (",[203,23946,23492],{"href":23489,"rel":23947,"title":23491},[207],[72,23949],{},[2459,23951,23953,20180,23956,23959],{"id":23952},"defu-and-destr-defaults-safe-parsing",[546,23954,23955],{},"defu",[546,23957,23958],{},"destr"," — Defaults & Safe Parsing",[561,23961,23962,23970],{},[564,23963,23964,23966,23967,2390],{},[39,23965,23955],{}," lets you merge objects with recursive defaults — perfect for configs. (",[203,23968,23492],{"href":23489,"rel":23969,"title":23491},[207],[564,23971,23972,23974,23975,3890,23978,2390],{},[39,23973,23958],{}," safely parses JSON with better performance and security than ",[39,23976,23977],{},"JSON.parse",[203,23979,23492],{"href":23489,"rel":23980,"title":23491},[207],[47,23982,23984],{"className":1010,"code":23983,"language":1012,"meta":55,"style":55},"import { defu } from \"defu\";\nimport { destr } from \"destr\";\n\nconst defaults = { port: 3000 };\nconst config = defu(destr(process.env.APP_CONFIG), defaults);\n",[39,23985,23986,24000,24014,24018,24035],{"__ignoreMap":55},[250,23987,23988,23990,23993,23995,23998],{"class":252,"line":253},[250,23989,1763],{"class":786},[250,23991,23992],{"class":912}," { defu } ",[250,23994,1769],{"class":786},[250,23996,23997],{"class":782}," \"defu\"",[250,23999,1379],{"class":912},[250,24001,24002,24004,24007,24009,24012],{"class":252,"line":113},[250,24003,1763],{"class":786},[250,24005,24006],{"class":912}," { destr } ",[250,24008,1769],{"class":786},[250,24010,24011],{"class":782}," \"destr\"",[250,24013,1379],{"class":912},[250,24015,24016],{"class":252,"line":110},[250,24017,795],{"emptyLinePlaceholder":129},[250,24019,24020,24022,24025,24027,24030,24033],{"class":252,"line":269},[250,24021,1181],{"class":786},[250,24023,24024],{"class":778}," defaults",[250,24026,1187],{"class":786},[250,24028,24029],{"class":912}," { port: ",[250,24031,24032],{"class":778},"3000",[250,24034,5784],{"class":912},[250,24036,24037,24039,24041,24043,24046,24048,24050,24052,24055],{"class":252,"line":275},[250,24038,1181],{"class":786},[250,24040,8983],{"class":778},[250,24042,1187],{"class":786},[250,24044,24045],{"class":774}," defu",[250,24047,1434],{"class":912},[250,24049,23958],{"class":774},[250,24051,23766],{"class":912},[250,24053,24054],{"class":778},"APP_CONFIG",[250,24056,24057],{"class":912},"), defaults);\n",[20,24059,24060,24061,24063],{},"These utilities pair well with ",[39,24062,23500],{}," for robust config and data handling.",[72,24065],{},[31,24067,24069],{"id":24068},"how-these-fit-together-in-a-real-app","How These Fit Together in a Real App",[20,24071,24072],{},"Let’s imagine building a minimal app with UnJS tools:",[2922,24074,24075,24083,24091,24099,24108,24116],{},[564,24076,24077,24079,24080,24082],{},[546,24078,18816],{}," – Use ",[39,24081,23500],{}," to load app configs, merging defaults and environment settings.",[564,24084,24085,24079,24088,24090],{},[546,24086,24087],{},"Server Setup",[39,24089,3504],{}," to define API endpoints and middleware.",[564,24092,24093,24079,24096,24098],{},[546,24094,24095],{},"Data Fetching",[39,24097,23582],{}," on both client-side and server-side for HTTP requests.",[564,24100,24101,24104,24105,24107],{},[546,24102,24103],{},"Build\u002FPlugin Support"," – Enhance the build pipeline with ",[39,24106,23658],{}," for consistent tooling across environments.",[564,24109,24110,24079,24113,24115],{},[546,24111,24112],{},"Runtime TypeScript",[39,24114,23793],{}," in scripts or custom tooling parts of the app.",[564,24117,24118,24079,24121,7128,24123,21086,24125,24127],{},[546,24119,24120],{},"Logging & Utilities",[39,24122,23887],{},[39,24124,23955],{},[39,24126,23958],{}," for reliable logging, defaults handling, and parsing.",[20,24129,24130],{},"Each UnJS package is independent and tree-shakeable. Only install what you need to keep your bundles lean.\n(::)",[72,24132],{},[31,24134,24136],{"id":24135},"code-example-putting-it-all-together","Code Example: Putting It All Together",[20,24138,24139],{},"Below is a simple example of a Nitro server with config loading and fetch utility:",[47,24141,24144],{"className":1010,"code":24142,"filename":24143,"language":1012,"meta":55,"style":55},"import { createNitro } from \"nitro\";\nimport { loadConfig } from \"c12\";\nimport { ofetch } from \"ofetch\";\nimport { consola } from \"consola\";\n\nconst { config } = await loadConfig({});\n\nexport default createNitro({\n  async handlers() {\n    return [\n      {\n        route: \"\u002Fapi\u002Fhello\",\n        handler: () => ({\n          message: \"Hello from UnJS App!\",\n          env: config.NODE_ENV\n        })\n      },\n      {\n        route: \"\u002Fapi\u002Fuser\",\n        handler: async () => {\n          const user = await ofetch(\"https:\u002F\u002Fjsonplaceholder.typicode.com\u002Fusers\u002F1\");\n          consola.info(\"Fetched user:\", user);\n          return user;\n        }\n      }\n    ];\n  }\n});\n","example.ts",[39,24145,24146,24158,24170,24182,24194,24198,24216,24220,24230,24240,24246,24251,24260,24271,24281,24289,24294,24298,24302,24310,24324,24344,24359,24367,24371,24375,24380,24384],{"__ignoreMap":55},[250,24147,24148,24150,24152,24154,24156],{"class":252,"line":253},[250,24149,1763],{"class":786},[250,24151,23413],{"class":912},[250,24153,1769],{"class":786},[250,24155,23418],{"class":782},[250,24157,1379],{"class":912},[250,24159,24160,24162,24164,24166,24168],{"class":252,"line":113},[250,24161,1763],{"class":786},[250,24163,23523],{"class":912},[250,24165,1769],{"class":786},[250,24167,23528],{"class":782},[250,24169,1379],{"class":912},[250,24171,24172,24174,24176,24178,24180],{"class":252,"line":110},[250,24173,1763],{"class":786},[250,24175,23604],{"class":912},[250,24177,1769],{"class":786},[250,24179,23609],{"class":782},[250,24181,1379],{"class":912},[250,24183,24184,24186,24188,24190,24192],{"class":252,"line":269},[250,24185,1763],{"class":786},[250,24187,23903],{"class":912},[250,24189,1769],{"class":786},[250,24191,23908],{"class":782},[250,24193,1379],{"class":912},[250,24195,24196],{"class":252,"line":275},[250,24197,795],{"emptyLinePlaceholder":129},[250,24199,24200,24202,24204,24206,24208,24210,24212,24214],{"class":252,"line":281},[250,24201,1181],{"class":786},[250,24203,7768],{"class":912},[250,24205,227],{"class":778},[250,24207,11640],{"class":912},[250,24209,1416],{"class":786},[250,24211,1463],{"class":786},[250,24213,23551],{"class":774},[250,24215,23554],{"class":912},[250,24217,24218],{"class":252,"line":287},[250,24219,795],{"emptyLinePlaceholder":129},[250,24221,24222,24224,24226,24228],{"class":252,"line":293},[250,24223,1019],{"class":786},[250,24225,1022],{"class":786},[250,24227,23433],{"class":774},[250,24229,1028],{"class":912},[250,24231,24232,24235,24238],{"class":252,"line":299},[250,24233,24234],{"class":786},"  async",[250,24236,24237],{"class":774}," handlers",[250,24239,1851],{"class":912},[250,24241,24242,24244],{"class":252,"line":132},[250,24243,14581],{"class":786},[250,24245,1190],{"class":912},[250,24247,24248],{"class":252,"line":310},[250,24249,24250],{"class":912},"      {\n",[250,24252,24253,24256,24258],{"class":252,"line":316},[250,24254,24255],{"class":912},"        route: ",[250,24257,23453],{"class":782},[250,24259,927],{"class":912},[250,24261,24262,24265,24267,24269],{"class":252,"line":322},[250,24263,24264],{"class":774},"        handler",[250,24266,22690],{"class":912},[250,24268,1115],{"class":786},[250,24270,23710],{"class":912},[250,24272,24273,24276,24279],{"class":252,"line":328},[250,24274,24275],{"class":912},"          message: ",[250,24277,24278],{"class":782},"\"Hello from UnJS App!\"",[250,24280,927],{"class":912},[250,24282,24283,24286],{"class":252,"line":334},[250,24284,24285],{"class":912},"          env: config.",[250,24287,24288],{"class":778},"NODE_ENV\n",[250,24290,24291],{"class":252,"line":340},[250,24292,24293],{"class":912},"        })\n",[250,24295,24296],{"class":252,"line":346},[250,24297,456],{"class":912},[250,24299,24300],{"class":252,"line":352},[250,24301,24250],{"class":912},[250,24303,24304,24306,24308],{"class":252,"line":358},[250,24305,24255],{"class":912},[250,24307,23633],{"class":782},[250,24309,927],{"class":912},[250,24311,24312,24314,24316,24318,24320,24322],{"class":252,"line":364},[250,24313,24264],{"class":774},[250,24315,921],{"class":912},[250,24317,1437],{"class":786},[250,24319,2015],{"class":912},[250,24321,1115],{"class":786},[250,24323,1118],{"class":912},[250,24325,24326,24329,24331,24333,24335,24337,24339,24342],{"class":252,"line":370},[250,24327,24328],{"class":786},"          const",[250,24330,14943],{"class":778},[250,24332,1187],{"class":786},[250,24334,1463],{"class":786},[250,24336,23628],{"class":774},[250,24338,1434],{"class":912},[250,24340,24341],{"class":782},"\"https:\u002F\u002Fjsonplaceholder.typicode.com\u002Fusers\u002F1\"",[250,24343,1885],{"class":912},[250,24345,24346,24349,24351,24353,24356],{"class":252,"line":376},[250,24347,24348],{"class":912},"          consola.",[250,24350,631],{"class":774},[250,24352,1434],{"class":912},[250,24354,24355],{"class":782},"\"Fetched user:\"",[250,24357,24358],{"class":912},", user);\n",[250,24360,24361,24364],{"class":252,"line":382},[250,24362,24363],{"class":786},"          return",[250,24365,24366],{"class":912}," user;\n",[250,24368,24369],{"class":252,"line":388},[250,24370,3875],{"class":912},[250,24372,24373],{"class":252,"line":393},[250,24374,10550],{"class":912},[250,24376,24377],{"class":252,"line":399},[250,24378,24379],{"class":912},"    ];\n",[250,24381,24382],{"class":252,"line":405},[250,24383,986],{"class":912},[250,24385,24386],{"class":252,"line":410},[250,24387,1077],{"class":912},[20,24389,24390,24391,24394,24395,2390],{},"This sample shows how ",[546,24392,24393],{},"Nitro, c12, ofetch, and consola"," can power a flexible, full-featured backend. (",[203,24396,23492],{"href":23489,"rel":24397,"title":23491},[207],[72,24399],{},[15,24401,3352],{"id":3351},[20,24403,23341,24404,24406,24407,24410,24411,2390],{},[546,24405,23344],{}," offers a rich — yet modular — toolkit for modern JavaScript applications. By adopting packages like ",[546,24408,24409],{},"Nitro, c12, ofetch, unplugin, jiti, consola, defu, and destr",", you can assemble a highly productive development environment while keeping your dependencies lean. (",[203,24412,23492],{"href":24413,"rel":24414,"title":24415},"https:\u002F\u002Funjs.io\u002F",[207],"UnJS: Unleash JavaScript's Potential",[20,24417,24418,24419,24422],{},"Whether you're building servers, tooling, or full-stack apps, UnJS packages empower you to choose ",[3587,24420,24421],{},"exactly the components you need"," — embracing composability and simplicity in equal measure. 🚀",[500,24424,24425],{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sA_wV, html code.shiki .sA_wV{--shiki-default:#032F62;--shiki-dark:#DBEDFF}",{"title":55,"searchDepth":110,"depth":110,"links":24427},[24428,24444,24445],{"id":23372,"depth":113,"text":23373,"children":24429},[24430,24432,24434,24436,24438,24440,24442],{"id":23379,"depth":110,"text":24431},"Nitro — A Universal Server Engine",{"id":23497,"depth":110,"text":24433},"c12 — Smart Configuration Loader",{"id":23579,"depth":110,"text":24435},"ofetch — A Universal Fetch API",{"id":23655,"depth":110,"text":24437},"unplugin — Plugin System Across Bundlers",{"id":23790,"depth":110,"text":24439},"jiti — Runtime TypeScript and ESM Support",{"id":23884,"depth":110,"text":24441},"consola — Elegant Console Logging",{"id":23952,"depth":110,"text":24443},"defu and destr — Defaults & Safe Parsing",{"id":24068,"depth":113,"text":24069},{"id":24135,"depth":113,"text":24136},"2026-01-12","Explore the main UnJS packages and learn how to use them together in a real-world application — from config loading and HTTP servers to fetch utilities and building tools.",{"type":12,"value":24449},[24450,24452,24460],[15,24451,541],{"id":540},[20,24453,23341,24454,23345,24456,23349,24458],{},[546,24455,23344],{},[546,24457,23348],{},[3540,24459,3543],{"index":3542},[20,24461,23354,24462,23358],{},[546,24463,23357],{},[10783,3504,23582,23658,24465,23500],"unstorage",{},"\u002Fblog\u002Funjs-packages",{"title":23333,"description":24447},"blog\u002Funjs-packages","vdCQko37SZVB8LKaQh1u-JLdHqeOhRnmKgH-aZdC6mA",{"id":24472,"title":24473,"author":24474,"body":24475,"canonical":115,"categories":115,"date":28128,"description":28129,"excerpt":28130,"extension":118,"img":28148,"keywords":28149,"language":3510,"meta":28155,"navigation":129,"ogImage":115,"path":28156,"rating":275,"readTime":132,"seo":28157,"stem":28158,"tag":3515,"__hash__":28159},"blog\u002Fblog\u002Fviteplus-teacher-toolkit-package.md","Building a Teacher's Grading Toolkit with Vite+",{"name":8,"img":10,"website":535},{"type":12,"value":24476,"toc":28120},[24477,24479,24482,24489,24504,24513,24517,24520,24552,24555,24559,24562,24584,24595,24598,24633,24637,24642,24842,24846,24850,25265,25269,25499,25502,25590,25594,25894,25898,26362,26366,26443,26447,26452,27333,27336,27348,27363,27367,27372,27460,27463,27477,27481,27493,27496,27526,27539,27543,27548,27724,27727,27739,27743,27746,27759,27972,27976,28046,28051,28063,28067,28099,28101,28111,28114,28117],[15,24478,541],{"id":540},[20,24480,24481],{},"Teachers spend hours every week calculating grades, curving scores, and converting percentages to letter grades. Most of this work happens in spreadsheets with fragile formulas that break the moment a student is added out of order.",[20,24483,24484,24485,24488],{},"What if we packaged those utilities as a reusable TypeScript library — something any teacher or school app developer could ",[39,24486,24487],{},"npm install"," and use?",[20,24490,24491,24492,24495,24496,24499,24500,24503],{},"In this post, we'll build ",[546,24493,24494],{},"teacher-toolkit"," — an npm package for grade calculations — using ",[546,24497,24498],{},"Vite+"," and its ",[39,24501,24502],{},"vp pack"," command. No Webpack config. No tsconfig gymnastics. Just code, test, and ship.",[24,24505,24506],{"type":631},[20,24507,24508,24509,24512],{},"This tutorial assumes you have Vite+ installed. If not, run ",[39,24510,24511],{},"curl -fsSL https:\u002F\u002Fvite.plus | bash"," and open a new terminal.",[15,24514,24516],{"id":24515},"what-were-building","What We're Building",[20,24518,24519],{},"A lightweight TypeScript library that provides:",[561,24521,24522,24528,24534,24540,24546],{},[564,24523,24524,24527],{},[546,24525,24526],{},"Letter grade conversion"," — percentage to A\u002FB\u002FC\u002FD\u002FF",[564,24529,24530,24533],{},[546,24531,24532],{},"Weighted grade calculation"," — combine homework, exams, participation",[564,24535,24536,24539],{},[546,24537,24538],{},"Score curving"," — boost grades based on class highest score",[564,24541,24542,24545],{},[546,24543,24544],{},"GPA conversion"," — letter grades to 4.0 scale",[564,24547,24548,24551],{},[546,24549,24550],{},"Class statistics"," — mean, median, standard deviation",[20,24553,24554],{},"All with full type safety and zero dependencies.",[15,24556,24558],{"id":24557},"step-1-scaffold-the-library","Step 1: Scaffold the Library",[20,24560,24561],{},"Vite+ has a built-in library template. Run:",[47,24563,24565],{"className":758,"code":24564,"language":761,"meta":55,"style":55},"vp create vite:library -- teacher-toolkit\n",[39,24566,24567],{"__ignoreMap":55},[250,24568,24569,24572,24575,24578,24581],{"class":252,"line":253},[250,24570,24571],{"class":774},"vp",[250,24573,24574],{"class":782}," create",[250,24576,24577],{"class":782}," vite:library",[250,24579,24580],{"class":778}," --",[250,24582,24583],{"class":782}," teacher-toolkit\n",[47,24585,24587],{"className":758,"code":24586,"language":761,"meta":55,"style":55},"vp install\n",[39,24588,24589],{"__ignoreMap":55},[250,24590,24591,24593],{"class":252,"line":253},[250,24592,24571],{"class":774},[250,24594,896],{"class":782},[20,24596,24597],{},"This gives us a project structure like:",[47,24599,24601],{"className":12725,"code":24600,"language":12727,"meta":55,"style":55},"teacher-toolkit\u002F\n  src\u002F\n    index.ts        # Entry point\n  vite.config.ts\n  package.json\n  tsconfig.json\n",[39,24602,24603,24608,24613,24618,24623,24628],{"__ignoreMap":55},[250,24604,24605],{"class":252,"line":253},[250,24606,24607],{},"teacher-toolkit\u002F\n",[250,24609,24610],{"class":252,"line":113},[250,24611,24612],{},"  src\u002F\n",[250,24614,24615],{"class":252,"line":110},[250,24616,24617],{},"    index.ts        # Entry point\n",[250,24619,24620],{"class":252,"line":269},[250,24621,24622],{},"  vite.config.ts\n",[250,24624,24625],{"class":252,"line":275},[250,24626,24627],{},"  package.json\n",[250,24629,24630],{"class":252,"line":281},[250,24631,24632],{},"  tsconfig.json\n",[15,24634,24636],{"id":24635},"step-2-define-the-types","Step 2: Define the Types",[20,24638,1092,24639,1007],{},[39,24640,24641],{},"src\u002Ftypes.ts",[47,24643,24645],{"className":1010,"code":24644,"filename":24641,"language":1012,"meta":55,"style":55},"export interface GradeScale {\n  letter: string;\n  min: number;\n  max: number;\n  gpa: number;\n}\n\nexport interface WeightedComponent {\n  name: string;\n  score: number;\n  weight: number;\n}\n\nexport interface ClassStats {\n  mean: number;\n  median: number;\n  stdDev: number;\n  highest: number;\n  lowest: number;\n  count: number;\n}\n",[39,24646,24647,24658,24669,24680,24691,24702,24706,24710,24721,24731,24742,24753,24757,24761,24772,24783,24794,24805,24816,24827,24838],{"__ignoreMap":55},[250,24648,24649,24651,24653,24656],{"class":252,"line":253},[250,24650,1019],{"class":786},[250,24652,8532],{"class":786},[250,24654,24655],{"class":774}," GradeScale",[250,24657,1118],{"class":912},[250,24659,24660,24663,24665,24667],{"class":252,"line":113},[250,24661,24662],{"class":1370},"  letter",[250,24664,1007],{"class":786},[250,24666,2506],{"class":778},[250,24668,1379],{"class":912},[250,24670,24671,24674,24676,24678],{"class":252,"line":110},[250,24672,24673],{"class":1370},"  min",[250,24675,1007],{"class":786},[250,24677,1376],{"class":778},[250,24679,1379],{"class":912},[250,24681,24682,24685,24687,24689],{"class":252,"line":269},[250,24683,24684],{"class":1370},"  max",[250,24686,1007],{"class":786},[250,24688,1376],{"class":778},[250,24690,1379],{"class":912},[250,24692,24693,24696,24698,24700],{"class":252,"line":275},[250,24694,24695],{"class":1370},"  gpa",[250,24697,1007],{"class":786},[250,24699,1376],{"class":778},[250,24701,1379],{"class":912},[250,24703,24704],{"class":252,"line":281},[250,24705,991],{"class":912},[250,24707,24708],{"class":252,"line":287},[250,24709,795],{"emptyLinePlaceholder":129},[250,24711,24712,24714,24716,24719],{"class":252,"line":293},[250,24713,1019],{"class":786},[250,24715,8532],{"class":786},[250,24717,24718],{"class":774}," WeightedComponent",[250,24720,1118],{"class":912},[250,24722,24723,24725,24727,24729],{"class":252,"line":299},[250,24724,2501],{"class":1370},[250,24726,1007],{"class":786},[250,24728,2506],{"class":778},[250,24730,1379],{"class":912},[250,24732,24733,24736,24738,24740],{"class":252,"line":132},[250,24734,24735],{"class":1370},"  score",[250,24737,1007],{"class":786},[250,24739,1376],{"class":778},[250,24741,1379],{"class":912},[250,24743,24744,24747,24749,24751],{"class":252,"line":310},[250,24745,24746],{"class":1370},"  weight",[250,24748,1007],{"class":786},[250,24750,1376],{"class":778},[250,24752,1379],{"class":912},[250,24754,24755],{"class":252,"line":316},[250,24756,991],{"class":912},[250,24758,24759],{"class":252,"line":322},[250,24760,795],{"emptyLinePlaceholder":129},[250,24762,24763,24765,24767,24770],{"class":252,"line":328},[250,24764,1019],{"class":786},[250,24766,8532],{"class":786},[250,24768,24769],{"class":774}," ClassStats",[250,24771,1118],{"class":912},[250,24773,24774,24777,24779,24781],{"class":252,"line":334},[250,24775,24776],{"class":1370},"  mean",[250,24778,1007],{"class":786},[250,24780,1376],{"class":778},[250,24782,1379],{"class":912},[250,24784,24785,24788,24790,24792],{"class":252,"line":340},[250,24786,24787],{"class":1370},"  median",[250,24789,1007],{"class":786},[250,24791,1376],{"class":778},[250,24793,1379],{"class":912},[250,24795,24796,24799,24801,24803],{"class":252,"line":346},[250,24797,24798],{"class":1370},"  stdDev",[250,24800,1007],{"class":786},[250,24802,1376],{"class":778},[250,24804,1379],{"class":912},[250,24806,24807,24810,24812,24814],{"class":252,"line":352},[250,24808,24809],{"class":1370},"  highest",[250,24811,1007],{"class":786},[250,24813,1376],{"class":778},[250,24815,1379],{"class":912},[250,24817,24818,24821,24823,24825],{"class":252,"line":358},[250,24819,24820],{"class":1370},"  lowest",[250,24822,1007],{"class":786},[250,24824,1376],{"class":778},[250,24826,1379],{"class":912},[250,24828,24829,24832,24834,24836],{"class":252,"line":364},[250,24830,24831],{"class":1370},"  count",[250,24833,1007],{"class":786},[250,24835,1376],{"class":778},[250,24837,1379],{"class":912},[250,24839,24840],{"class":252,"line":370},[250,24841,991],{"class":912},[15,24843,24845],{"id":24844},"step-3-build-the-core-utilities","Step 3: Build the Core Utilities",[31,24847,24849],{"id":24848},"letter-grade-conversion","Letter Grade Conversion",[47,24851,24854],{"className":1010,"code":24852,"filename":24853,"language":1012,"meta":55,"style":55},"import type { GradeScale } from '.\u002Ftypes';\n\nconst DEFAULT_SCALE: GradeScale[] = [\n  { letter: 'A', min: 90, max: 100, gpa: 4.0 },\n  { letter: 'B', min: 80, max: 89, gpa: 3.0 },\n  { letter: 'C', min: 70, max: 79, gpa: 2.0 },\n  { letter: 'D', min: 60, max: 69, gpa: 1.0 },\n  { letter: 'F', min: 0, max: 59, gpa: 0.0 },\n];\n\nexport function toLetterGrade(\n  percentage: number,\n  scale: GradeScale[] = DEFAULT_SCALE\n): string {\n  const clamped = Math.max(0, Math.min(100, percentage));\n  const match = scale.find(s => clamped >= s.min && clamped \u003C= s.max);\n  return match?.letter ?? 'F';\n}\n\nexport function toGPA(\n  percentage: number,\n  scale: GradeScale[] = DEFAULT_SCALE\n): number {\n  const letter = toLetterGrade(percentage, scale);\n  const match = scale.find(s => s.letter === letter);\n  return match?.gpa ?? 0;\n}\n","src\u002Fgrades.ts",[39,24855,24856,24872,24876,24893,24919,24942,24966,24989,25012,25016,25020,25031,25042,25058,25068,25099,25139,25154,25158,25162,25173,25183,25197,25207,25221,25248,25261],{"__ignoreMap":55},[250,24857,24858,24860,24862,24865,24867,24870],{"class":252,"line":253},[250,24859,1763],{"class":786},[250,24861,4974],{"class":786},[250,24863,24864],{"class":912}," { GradeScale } ",[250,24866,1769],{"class":786},[250,24868,24869],{"class":782}," '.\u002Ftypes'",[250,24871,1379],{"class":912},[250,24873,24874],{"class":252,"line":113},[250,24875,795],{"emptyLinePlaceholder":129},[250,24877,24878,24880,24883,24885,24887,24889,24891],{"class":252,"line":110},[250,24879,1181],{"class":786},[250,24881,24882],{"class":778}," DEFAULT_SCALE",[250,24884,1007],{"class":786},[250,24886,24655],{"class":774},[250,24888,1413],{"class":912},[250,24890,1416],{"class":786},[250,24892,1190],{"class":912},[250,24894,24895,24898,24901,24904,24907,24910,24912,24915,24917],{"class":252,"line":269},[250,24896,24897],{"class":912},"  { letter: ",[250,24899,24900],{"class":782},"'A'",[250,24902,24903],{"class":912},", min: ",[250,24905,24906],{"class":778},"90",[250,24908,24909],{"class":912},", max: ",[250,24911,1590],{"class":778},[250,24913,24914],{"class":912},", gpa: ",[250,24916,1283],{"class":778},[250,24918,1219],{"class":912},[250,24920,24921,24923,24926,24928,24931,24933,24936,24938,24940],{"class":252,"line":275},[250,24922,24897],{"class":912},[250,24924,24925],{"class":782},"'B'",[250,24927,24903],{"class":912},[250,24929,24930],{"class":778},"80",[250,24932,24909],{"class":912},[250,24934,24935],{"class":778},"89",[250,24937,24914],{"class":912},[250,24939,1236],{"class":778},[250,24941,1219],{"class":912},[250,24943,24944,24946,24949,24951,24954,24956,24959,24961,24964],{"class":252,"line":281},[250,24945,24897],{"class":912},[250,24947,24948],{"class":782},"'C'",[250,24950,24903],{"class":912},[250,24952,24953],{"class":778},"70",[250,24955,24909],{"class":912},[250,24957,24958],{"class":778},"79",[250,24960,24914],{"class":912},[250,24962,24963],{"class":778},"2.0",[250,24965,1219],{"class":912},[250,24967,24968,24970,24973,24975,24977,24979,24982,24984,24987],{"class":252,"line":287},[250,24969,24897],{"class":912},[250,24971,24972],{"class":782},"'D'",[250,24974,24903],{"class":912},[250,24976,15548],{"class":778},[250,24978,24909],{"class":912},[250,24980,24981],{"class":778},"69",[250,24983,24914],{"class":912},[250,24985,24986],{"class":778},"1.0",[250,24988,1219],{"class":912},[250,24990,24991,24993,24996,24998,25000,25002,25005,25007,25010],{"class":252,"line":293},[250,24992,24897],{"class":912},[250,24994,24995],{"class":782},"'F'",[250,24997,24903],{"class":912},[250,24999,3542],{"class":778},[250,25001,24909],{"class":912},[250,25003,25004],{"class":778},"59",[250,25006,24914],{"class":912},[250,25008,25009],{"class":778},"0.0",[250,25011,1219],{"class":912},[250,25013,25014],{"class":252,"line":299},[250,25015,1317],{"class":912},[250,25017,25018],{"class":252,"line":132},[250,25019,795],{"emptyLinePlaceholder":129},[250,25021,25022,25024,25026,25029],{"class":252,"line":310},[250,25023,1019],{"class":786},[250,25025,1845],{"class":786},[250,25027,25028],{"class":774}," toLetterGrade",[250,25030,1982],{"class":912},[250,25032,25033,25036,25038,25040],{"class":252,"line":316},[250,25034,25035],{"class":1370},"  percentage",[250,25037,1007],{"class":786},[250,25039,1376],{"class":778},[250,25041,927],{"class":912},[250,25043,25044,25047,25049,25051,25053,25055],{"class":252,"line":322},[250,25045,25046],{"class":1370},"  scale",[250,25048,1007],{"class":786},[250,25050,24655],{"class":774},[250,25052,1413],{"class":912},[250,25054,1416],{"class":786},[250,25056,25057],{"class":778}," DEFAULT_SCALE\n",[250,25059,25060,25062,25064,25066],{"class":252,"line":328},[250,25061,2390],{"class":912},[250,25063,1007],{"class":786},[250,25065,2506],{"class":778},[250,25067,1118],{"class":912},[250,25069,25070,25072,25075,25077,25079,25082,25084,25086,25089,25092,25094,25096],{"class":252,"line":334},[250,25071,1455],{"class":786},[250,25073,25074],{"class":778}," clamped",[250,25076,1187],{"class":786},[250,25078,2277],{"class":912},[250,25080,25081],{"class":774},"max",[250,25083,1434],{"class":912},[250,25085,3542],{"class":778},[250,25087,25088],{"class":912},", Math.",[250,25090,25091],{"class":774},"min",[250,25093,1434],{"class":912},[250,25095,1590],{"class":778},[250,25097,25098],{"class":912},", percentage));\n",[250,25100,25101,25103,25106,25108,25111,25114,25116,25119,25121,25124,25126,25129,25131,25133,25136],{"class":252,"line":340},[250,25102,1455],{"class":786},[250,25104,25105],{"class":778}," match",[250,25107,1187],{"class":786},[250,25109,25110],{"class":912}," scale.",[250,25112,25113],{"class":774},"find",[250,25115,1434],{"class":912},[250,25117,25118],{"class":1370},"s",[250,25120,23033],{"class":786},[250,25122,25123],{"class":912}," clamped ",[250,25125,2030],{"class":786},[250,25127,25128],{"class":912}," s.min ",[250,25130,10479],{"class":786},[250,25132,25123],{"class":912},[250,25134,25135],{"class":786},"\u003C=",[250,25137,25138],{"class":912}," s.max);\n",[250,25140,25141,25143,25146,25149,25152],{"class":252,"line":346},[250,25142,1123],{"class":786},[250,25144,25145],{"class":912}," match?.letter ",[250,25147,25148],{"class":786},"??",[250,25150,25151],{"class":782}," 'F'",[250,25153,1379],{"class":912},[250,25155,25156],{"class":252,"line":352},[250,25157,991],{"class":912},[250,25159,25160],{"class":252,"line":358},[250,25161,795],{"emptyLinePlaceholder":129},[250,25163,25164,25166,25168,25171],{"class":252,"line":364},[250,25165,1019],{"class":786},[250,25167,1845],{"class":786},[250,25169,25170],{"class":774}," toGPA",[250,25172,1982],{"class":912},[250,25174,25175,25177,25179,25181],{"class":252,"line":370},[250,25176,25035],{"class":1370},[250,25178,1007],{"class":786},[250,25180,1376],{"class":778},[250,25182,927],{"class":912},[250,25184,25185,25187,25189,25191,25193,25195],{"class":252,"line":376},[250,25186,25046],{"class":1370},[250,25188,1007],{"class":786},[250,25190,24655],{"class":774},[250,25192,1413],{"class":912},[250,25194,1416],{"class":786},[250,25196,25057],{"class":778},[250,25198,25199,25201,25203,25205],{"class":252,"line":382},[250,25200,2390],{"class":912},[250,25202,1007],{"class":786},[250,25204,1376],{"class":778},[250,25206,1118],{"class":912},[250,25208,25209,25211,25214,25216,25218],{"class":252,"line":388},[250,25210,1455],{"class":786},[250,25212,25213],{"class":778}," letter",[250,25215,1187],{"class":786},[250,25217,25028],{"class":774},[250,25219,25220],{"class":912},"(percentage, scale);\n",[250,25222,25223,25225,25227,25229,25231,25233,25235,25237,25239,25242,25245],{"class":252,"line":393},[250,25224,1455],{"class":786},[250,25226,25105],{"class":778},[250,25228,1187],{"class":786},[250,25230,25110],{"class":912},[250,25232,25113],{"class":774},[250,25234,1434],{"class":912},[250,25236,25118],{"class":1370},[250,25238,23033],{"class":786},[250,25240,25241],{"class":912}," s.letter ",[250,25243,25244],{"class":786},"===",[250,25246,25247],{"class":912}," letter);\n",[250,25249,25250,25252,25255,25257,25259],{"class":252,"line":399},[250,25251,1123],{"class":786},[250,25253,25254],{"class":912}," match?.gpa ",[250,25256,25148],{"class":786},[250,25258,1509],{"class":778},[250,25260,1379],{"class":912},[250,25262,25263],{"class":252,"line":405},[250,25264,991],{"class":912},[31,25266,25268],{"id":25267},"weighted-grade-calculation","Weighted Grade Calculation",[47,25270,25273],{"className":1010,"code":25271,"filename":25272,"language":1012,"meta":55,"style":55},"import type { WeightedComponent } from '.\u002Ftypes';\n\nexport function weightedAverage(components: WeightedComponent[]): number {\n  if (components.length === 0) return 0;\n\n  const totalWeight = components.reduce((sum, c) => sum + c.weight, 0);\n  if (totalWeight === 0) return 0;\n\n  const weighted = components.reduce(\n    (sum, c) => sum + c.score * c.weight,\n    0\n  );\n\n  return Math.round((weighted \u002F totalWeight) * 100) \u002F 100;\n}\n","src\u002Fweights.ts",[39,25274,25275,25290,25294,25321,25343,25347,25389,25408,25412,25427,25454,25459,25463,25467,25495],{"__ignoreMap":55},[250,25276,25277,25279,25281,25284,25286,25288],{"class":252,"line":253},[250,25278,1763],{"class":786},[250,25280,4974],{"class":786},[250,25282,25283],{"class":912}," { WeightedComponent } ",[250,25285,1769],{"class":786},[250,25287,24869],{"class":782},[250,25289,1379],{"class":912},[250,25291,25292],{"class":252,"line":113},[250,25293,795],{"emptyLinePlaceholder":129},[250,25295,25296,25298,25300,25303,25305,25308,25310,25312,25315,25317,25319],{"class":252,"line":110},[250,25297,1019],{"class":786},[250,25299,1845],{"class":786},[250,25301,25302],{"class":774}," weightedAverage",[250,25304,1434],{"class":912},[250,25306,25307],{"class":1370},"components",[250,25309,1007],{"class":786},[250,25311,24718],{"class":774},[250,25313,25314],{"class":912},"[])",[250,25316,1007],{"class":786},[250,25318,1376],{"class":778},[250,25320,1118],{"class":912},[250,25322,25323,25325,25328,25330,25332,25334,25336,25339,25341],{"class":252,"line":269},[250,25324,1486],{"class":786},[250,25326,25327],{"class":912}," (components.",[250,25329,1503],{"class":778},[250,25331,1506],{"class":786},[250,25333,1509],{"class":778},[250,25335,1446],{"class":912},[250,25337,25338],{"class":786},"return",[250,25340,1509],{"class":778},[250,25342,1379],{"class":912},[250,25344,25345],{"class":252,"line":275},[250,25346,795],{"emptyLinePlaceholder":129},[250,25348,25349,25351,25354,25356,25359,25362,25364,25367,25369,25372,25374,25376,25379,25382,25385,25387],{"class":252,"line":281},[250,25350,1455],{"class":786},[250,25352,25353],{"class":778}," totalWeight",[250,25355,1187],{"class":786},[250,25357,25358],{"class":912}," components.",[250,25360,25361],{"class":774},"reduce",[250,25363,1574],{"class":912},[250,25365,25366],{"class":1370},"sum",[250,25368,7128],{"class":912},[250,25370,25371],{"class":1370},"c",[250,25373,1446],{"class":912},[250,25375,1115],{"class":786},[250,25377,25378],{"class":912}," sum ",[250,25380,25381],{"class":786},"+",[250,25383,25384],{"class":912}," c.weight, ",[250,25386,3542],{"class":778},[250,25388,1885],{"class":912},[250,25390,25391,25393,25396,25398,25400,25402,25404,25406],{"class":252,"line":287},[250,25392,1486],{"class":786},[250,25394,25395],{"class":912}," (totalWeight ",[250,25397,25244],{"class":786},[250,25399,1509],{"class":778},[250,25401,1446],{"class":912},[250,25403,25338],{"class":786},[250,25405,1509],{"class":778},[250,25407,1379],{"class":912},[250,25409,25410],{"class":252,"line":293},[250,25411,795],{"emptyLinePlaceholder":129},[250,25413,25414,25416,25419,25421,25423,25425],{"class":252,"line":299},[250,25415,1455],{"class":786},[250,25417,25418],{"class":778}," weighted",[250,25420,1187],{"class":786},[250,25422,25358],{"class":912},[250,25424,25361],{"class":774},[250,25426,1982],{"class":912},[250,25428,25429,25432,25434,25436,25438,25440,25442,25444,25446,25449,25451],{"class":252,"line":132},[250,25430,25431],{"class":912},"    (",[250,25433,25366],{"class":1370},[250,25435,7128],{"class":912},[250,25437,25371],{"class":1370},[250,25439,1446],{"class":912},[250,25441,1115],{"class":786},[250,25443,25378],{"class":912},[250,25445,25381],{"class":786},[250,25447,25448],{"class":912}," c.score ",[250,25450,6594],{"class":786},[250,25452,25453],{"class":912}," c.weight,\n",[250,25455,25456],{"class":252,"line":310},[250,25457,25458],{"class":778},"    0\n",[250,25460,25461],{"class":252,"line":316},[250,25462,2859],{"class":912},[250,25464,25465],{"class":252,"line":322},[250,25466,795],{"emptyLinePlaceholder":129},[250,25468,25469,25471,25473,25475,25478,25480,25483,25485,25487,25489,25491,25493],{"class":252,"line":328},[250,25470,1123],{"class":786},[250,25472,2277],{"class":912},[250,25474,2280],{"class":774},[250,25476,25477],{"class":912},"((weighted ",[250,25479,2293],{"class":786},[250,25481,25482],{"class":912}," totalWeight) ",[250,25484,6594],{"class":786},[250,25486,1832],{"class":778},[250,25488,1446],{"class":912},[250,25490,2293],{"class":786},[250,25492,1832],{"class":778},[250,25494,1379],{"class":912},[250,25496,25497],{"class":252,"line":334},[250,25498,991],{"class":912},[20,25500,25501],{},"A teacher can use this like:",[47,25503,25505],{"className":1010,"code":25504,"language":1012,"meta":55,"style":55},"const finalGrade = weightedAverage([\n  { name: 'Homework', score: 88, weight: 0.3 },\n  { name: 'Midterm', score: 76, weight: 0.3 },\n  { name: 'Final Exam', score: 82, weight: 0.4 },\n]);\n\u002F\u002F => 81.8\n",[39,25506,25507,25521,25543,25561,25580,25585],{"__ignoreMap":55},[250,25508,25509,25511,25514,25516,25518],{"class":252,"line":253},[250,25510,1181],{"class":786},[250,25512,25513],{"class":778}," finalGrade",[250,25515,1187],{"class":786},[250,25517,25302],{"class":774},[250,25519,25520],{"class":912},"([\n",[250,25522,25523,25526,25529,25532,25535,25538,25541],{"class":252,"line":113},[250,25524,25525],{"class":912},"  { name: ",[250,25527,25528],{"class":782},"'Homework'",[250,25530,25531],{"class":912},", score: ",[250,25533,25534],{"class":778},"88",[250,25536,25537],{"class":912},", weight: ",[250,25539,25540],{"class":778},"0.3",[250,25542,1219],{"class":912},[250,25544,25545,25547,25550,25552,25555,25557,25559],{"class":252,"line":110},[250,25546,25525],{"class":912},[250,25548,25549],{"class":782},"'Midterm'",[250,25551,25531],{"class":912},[250,25553,25554],{"class":778},"76",[250,25556,25537],{"class":912},[250,25558,25540],{"class":778},[250,25560,1219],{"class":912},[250,25562,25563,25565,25568,25570,25573,25575,25578],{"class":252,"line":269},[250,25564,25525],{"class":912},[250,25566,25567],{"class":782},"'Final Exam'",[250,25569,25531],{"class":912},[250,25571,25572],{"class":778},"82",[250,25574,25537],{"class":912},[250,25576,25577],{"class":778},"0.4",[250,25579,1219],{"class":912},[250,25581,25582],{"class":252,"line":275},[250,25583,25584],{"class":912},"]);\n",[250,25586,25587],{"class":252,"line":281},[250,25588,25589],{"class":768},"\u002F\u002F => 81.8\n",[31,25591,25593],{"id":25592},"score-curving","Score Curving",[47,25595,25598],{"className":1010,"code":25596,"filename":25597,"language":1012,"meta":55,"style":55},"export function curveByHighest(\n  scores: number[],\n  targetHigh: number = 100\n): number[] {\n  const highest = Math.max(...scores);\n  if (highest >= targetHigh) return scores;\n\n  const boost = targetHigh - highest;\n  return scores.map(s => Math.min(100, s + boost));\n}\n\nexport function curveByMean(\n  scores: number[],\n  targetMean: number = 75\n): number[] {\n  const mean = scores.reduce((a, b) => a + b, 0) \u002F scores.length;\n  const shift = targetMean - mean;\n  return scores.map(s => Math.max(0, Math.min(100, s + shift)));\n}\n","src\u002Fcurve.ts",[39,25599,25600,25611,25623,25637,25648,25668,25685,25689,25706,25737,25741,25745,25756,25766,25780,25790,25836,25853,25890],{"__ignoreMap":55},[250,25601,25602,25604,25606,25609],{"class":252,"line":253},[250,25603,1019],{"class":786},[250,25605,1845],{"class":786},[250,25607,25608],{"class":774}," curveByHighest",[250,25610,1982],{"class":912},[250,25612,25613,25616,25618,25620],{"class":252,"line":113},[250,25614,25615],{"class":1370},"  scores",[250,25617,1007],{"class":786},[250,25619,1376],{"class":778},[250,25621,25622],{"class":912},"[],\n",[250,25624,25625,25628,25630,25632,25634],{"class":252,"line":110},[250,25626,25627],{"class":1370},"  targetHigh",[250,25629,1007],{"class":786},[250,25631,1376],{"class":778},[250,25633,1187],{"class":786},[250,25635,25636],{"class":778}," 100\n",[250,25638,25639,25641,25643,25645],{"class":252,"line":269},[250,25640,2390],{"class":912},[250,25642,1007],{"class":786},[250,25644,1376],{"class":778},[250,25646,25647],{"class":912},"[] {\n",[250,25649,25650,25652,25655,25657,25659,25661,25663,25665],{"class":252,"line":275},[250,25651,1455],{"class":786},[250,25653,25654],{"class":778}," highest",[250,25656,1187],{"class":786},[250,25658,2277],{"class":912},[250,25660,25081],{"class":774},[250,25662,1434],{"class":912},[250,25664,7771],{"class":786},[250,25666,25667],{"class":912},"scores);\n",[250,25669,25670,25672,25675,25677,25680,25682],{"class":252,"line":281},[250,25671,1486],{"class":786},[250,25673,25674],{"class":912}," (highest ",[250,25676,2030],{"class":786},[250,25678,25679],{"class":912}," targetHigh) ",[250,25681,25338],{"class":786},[250,25683,25684],{"class":912}," scores;\n",[250,25686,25687],{"class":252,"line":287},[250,25688,795],{"emptyLinePlaceholder":129},[250,25690,25691,25693,25696,25698,25701,25703],{"class":252,"line":293},[250,25692,1455],{"class":786},[250,25694,25695],{"class":778}," boost",[250,25697,1187],{"class":786},[250,25699,25700],{"class":912}," targetHigh ",[250,25702,2261],{"class":786},[250,25704,25705],{"class":912}," highest;\n",[250,25707,25708,25710,25713,25715,25717,25719,25721,25723,25725,25727,25729,25732,25734],{"class":252,"line":299},[250,25709,1123],{"class":786},[250,25711,25712],{"class":912}," scores.",[250,25714,2820],{"class":774},[250,25716,1434],{"class":912},[250,25718,25118],{"class":1370},[250,25720,23033],{"class":786},[250,25722,2277],{"class":912},[250,25724,25091],{"class":774},[250,25726,1434],{"class":912},[250,25728,1590],{"class":778},[250,25730,25731],{"class":912},", s ",[250,25733,25381],{"class":786},[250,25735,25736],{"class":912}," boost));\n",[250,25738,25739],{"class":252,"line":132},[250,25740,991],{"class":912},[250,25742,25743],{"class":252,"line":310},[250,25744,795],{"emptyLinePlaceholder":129},[250,25746,25747,25749,25751,25754],{"class":252,"line":316},[250,25748,1019],{"class":786},[250,25750,1845],{"class":786},[250,25752,25753],{"class":774}," curveByMean",[250,25755,1982],{"class":912},[250,25757,25758,25760,25762,25764],{"class":252,"line":322},[250,25759,25615],{"class":1370},[250,25761,1007],{"class":786},[250,25763,1376],{"class":778},[250,25765,25622],{"class":912},[250,25767,25768,25771,25773,25775,25777],{"class":252,"line":328},[250,25769,25770],{"class":1370},"  targetMean",[250,25772,1007],{"class":786},[250,25774,1376],{"class":778},[250,25776,1187],{"class":786},[250,25778,25779],{"class":778}," 75\n",[250,25781,25782,25784,25786,25788],{"class":252,"line":334},[250,25783,2390],{"class":912},[250,25785,1007],{"class":786},[250,25787,1376],{"class":778},[250,25789,25647],{"class":912},[250,25791,25792,25794,25797,25799,25801,25803,25805,25807,25809,25812,25814,25816,25819,25821,25824,25826,25828,25830,25832,25834],{"class":252,"line":340},[250,25793,1455],{"class":786},[250,25795,25796],{"class":778}," mean",[250,25798,1187],{"class":786},[250,25800,25712],{"class":912},[250,25802,25361],{"class":774},[250,25804,1574],{"class":912},[250,25806,203],{"class":1370},[250,25808,7128],{"class":912},[250,25810,25811],{"class":1370},"b",[250,25813,1446],{"class":912},[250,25815,1115],{"class":786},[250,25817,25818],{"class":912}," a ",[250,25820,25381],{"class":786},[250,25822,25823],{"class":912}," b, ",[250,25825,3542],{"class":778},[250,25827,1446],{"class":912},[250,25829,2293],{"class":786},[250,25831,25712],{"class":912},[250,25833,1503],{"class":778},[250,25835,1379],{"class":912},[250,25837,25838,25840,25843,25845,25848,25850],{"class":252,"line":346},[250,25839,1455],{"class":786},[250,25841,25842],{"class":778}," shift",[250,25844,1187],{"class":786},[250,25846,25847],{"class":912}," targetMean ",[250,25849,2261],{"class":786},[250,25851,25852],{"class":912}," mean;\n",[250,25854,25855,25857,25859,25861,25863,25865,25867,25869,25871,25873,25875,25877,25879,25881,25883,25885,25887],{"class":252,"line":352},[250,25856,1123],{"class":786},[250,25858,25712],{"class":912},[250,25860,2820],{"class":774},[250,25862,1434],{"class":912},[250,25864,25118],{"class":1370},[250,25866,23033],{"class":786},[250,25868,2277],{"class":912},[250,25870,25081],{"class":774},[250,25872,1434],{"class":912},[250,25874,3542],{"class":778},[250,25876,25088],{"class":912},[250,25878,25091],{"class":774},[250,25880,1434],{"class":912},[250,25882,1590],{"class":778},[250,25884,25731],{"class":912},[250,25886,25381],{"class":786},[250,25888,25889],{"class":912}," shift)));\n",[250,25891,25892],{"class":252,"line":358},[250,25893,991],{"class":912},[31,25895,25897],{"id":25896},"class-statistics","Class Statistics",[47,25899,25902],{"className":1010,"code":25900,"filename":25901,"language":1012,"meta":55,"style":55},"import type { ClassStats } from '.\u002Ftypes';\n\nexport function classStats(scores: number[]): ClassStats {\n  if (scores.length === 0) {\n    return { mean: 0, median: 0, stdDev: 0, highest: 0, lowest: 0, count: 0 };\n  }\n\n  const sorted = [...scores].sort((a, b) => a - b);\n  const count = sorted.length;\n  const sum = sorted.reduce((a, b) => a + b, 0);\n  const mean = sum \u002F count;\n\n  const mid = Math.floor(count \u002F 2);\n  const median = count % 2 === 0\n    ? (sorted[mid - 1] + sorted[mid]) \u002F 2\n    : sorted[mid];\n\n  const variance = sorted.reduce((acc, s) => acc + (s - mean) ** 2, 0) \u002F count;\n  const stdDev = Math.round(Math.sqrt(variance) * 100) \u002F 100;\n\n  return {\n    mean: Math.round(mean * 100) \u002F 100,\n    median,\n    stdDev,\n    highest: sorted[count - 1],\n    lowest: sorted[0],\n    count,\n  };\n}\n","src\u002Fstats.ts\"",[39,25903,25904,25919,25923,25949,25964,26000,26004,26008,26046,26062,26097,26112,26116,26140,26162,26187,26195,26199,26253,26287,26291,26297,26319,26324,26329,26340,26349,26354,26358],{"__ignoreMap":55},[250,25905,25906,25908,25910,25913,25915,25917],{"class":252,"line":253},[250,25907,1763],{"class":786},[250,25909,4974],{"class":786},[250,25911,25912],{"class":912}," { ClassStats } ",[250,25914,1769],{"class":786},[250,25916,24869],{"class":782},[250,25918,1379],{"class":912},[250,25920,25921],{"class":252,"line":113},[250,25922,795],{"emptyLinePlaceholder":129},[250,25924,25925,25927,25929,25932,25934,25937,25939,25941,25943,25945,25947],{"class":252,"line":110},[250,25926,1019],{"class":786},[250,25928,1845],{"class":786},[250,25930,25931],{"class":774}," classStats",[250,25933,1434],{"class":912},[250,25935,25936],{"class":1370},"scores",[250,25938,1007],{"class":786},[250,25940,1376],{"class":778},[250,25942,25314],{"class":912},[250,25944,1007],{"class":786},[250,25946,24769],{"class":774},[250,25948,1118],{"class":912},[250,25950,25951,25953,25956,25958,25960,25962],{"class":252,"line":269},[250,25952,1486],{"class":786},[250,25954,25955],{"class":912}," (scores.",[250,25957,1503],{"class":778},[250,25959,1506],{"class":786},[250,25961,1509],{"class":778},[250,25963,1512],{"class":912},[250,25965,25966,25968,25971,25973,25976,25978,25981,25983,25986,25988,25991,25993,25996,25998],{"class":252,"line":275},[250,25967,14581],{"class":786},[250,25969,25970],{"class":912}," { mean: ",[250,25972,3542],{"class":778},[250,25974,25975],{"class":912},", median: ",[250,25977,3542],{"class":778},[250,25979,25980],{"class":912},", stdDev: ",[250,25982,3542],{"class":778},[250,25984,25985],{"class":912},", highest: ",[250,25987,3542],{"class":778},[250,25989,25990],{"class":912},", lowest: ",[250,25992,3542],{"class":778},[250,25994,25995],{"class":912},", count: ",[250,25997,3542],{"class":778},[250,25999,5784],{"class":912},[250,26001,26002],{"class":252,"line":281},[250,26003,986],{"class":912},[250,26005,26006],{"class":252,"line":287},[250,26007,795],{"emptyLinePlaceholder":129},[250,26009,26010,26012,26015,26017,26019,26021,26024,26027,26029,26031,26033,26035,26037,26039,26041,26043],{"class":252,"line":293},[250,26011,1455],{"class":786},[250,26013,26014],{"class":778}," sorted",[250,26016,1187],{"class":786},[250,26018,7123],{"class":912},[250,26020,7771],{"class":786},[250,26022,26023],{"class":912},"scores].",[250,26025,26026],{"class":774},"sort",[250,26028,1574],{"class":912},[250,26030,203],{"class":1370},[250,26032,7128],{"class":912},[250,26034,25811],{"class":1370},[250,26036,1446],{"class":912},[250,26038,1115],{"class":786},[250,26040,25818],{"class":912},[250,26042,2261],{"class":786},[250,26044,26045],{"class":912}," b);\n",[250,26047,26048,26050,26053,26055,26058,26060],{"class":252,"line":299},[250,26049,1455],{"class":786},[250,26051,26052],{"class":778}," count",[250,26054,1187],{"class":786},[250,26056,26057],{"class":912}," sorted.",[250,26059,1503],{"class":778},[250,26061,1379],{"class":912},[250,26063,26064,26066,26069,26071,26073,26075,26077,26079,26081,26083,26085,26087,26089,26091,26093,26095],{"class":252,"line":132},[250,26065,1455],{"class":786},[250,26067,26068],{"class":778}," sum",[250,26070,1187],{"class":786},[250,26072,26057],{"class":912},[250,26074,25361],{"class":774},[250,26076,1574],{"class":912},[250,26078,203],{"class":1370},[250,26080,7128],{"class":912},[250,26082,25811],{"class":1370},[250,26084,1446],{"class":912},[250,26086,1115],{"class":786},[250,26088,25818],{"class":912},[250,26090,25381],{"class":786},[250,26092,25823],{"class":912},[250,26094,3542],{"class":778},[250,26096,1885],{"class":912},[250,26098,26099,26101,26103,26105,26107,26109],{"class":252,"line":310},[250,26100,1455],{"class":786},[250,26102,25796],{"class":778},[250,26104,1187],{"class":786},[250,26106,25378],{"class":912},[250,26108,2293],{"class":786},[250,26110,26111],{"class":912}," count;\n",[250,26113,26114],{"class":252,"line":316},[250,26115,795],{"emptyLinePlaceholder":129},[250,26117,26118,26120,26123,26125,26127,26130,26133,26135,26138],{"class":252,"line":322},[250,26119,1455],{"class":786},[250,26121,26122],{"class":778}," mid",[250,26124,1187],{"class":786},[250,26126,2277],{"class":912},[250,26128,26129],{"class":774},"floor",[250,26131,26132],{"class":912},"(count ",[250,26134,2293],{"class":786},[250,26136,26137],{"class":778}," 2",[250,26139,1885],{"class":912},[250,26141,26142,26144,26147,26149,26152,26155,26157,26159],{"class":252,"line":328},[250,26143,1455],{"class":786},[250,26145,26146],{"class":778}," median",[250,26148,1187],{"class":786},[250,26150,26151],{"class":912}," count ",[250,26153,26154],{"class":786},"%",[250,26156,26137],{"class":778},[250,26158,1506],{"class":786},[250,26160,26161],{"class":778}," 0\n",[250,26163,26164,26167,26170,26172,26175,26177,26179,26182,26184],{"class":252,"line":334},[250,26165,26166],{"class":786},"    ?",[250,26168,26169],{"class":912}," (sorted[mid ",[250,26171,2261],{"class":786},[250,26173,26174],{"class":778}," 1",[250,26176,22052],{"class":912},[250,26178,25381],{"class":786},[250,26180,26181],{"class":912}," sorted[mid]) ",[250,26183,2293],{"class":786},[250,26185,26186],{"class":778}," 2\n",[250,26188,26189,26192],{"class":252,"line":340},[250,26190,26191],{"class":786},"    :",[250,26193,26194],{"class":912}," sorted[mid];\n",[250,26196,26197],{"class":252,"line":346},[250,26198,795],{"emptyLinePlaceholder":129},[250,26200,26201,26203,26206,26208,26210,26212,26214,26217,26219,26221,26223,26225,26228,26230,26233,26235,26238,26241,26243,26245,26247,26249,26251],{"class":252,"line":352},[250,26202,1455],{"class":786},[250,26204,26205],{"class":778}," variance",[250,26207,1187],{"class":786},[250,26209,26057],{"class":912},[250,26211,25361],{"class":774},[250,26213,1574],{"class":912},[250,26215,26216],{"class":1370},"acc",[250,26218,7128],{"class":912},[250,26220,25118],{"class":1370},[250,26222,1446],{"class":912},[250,26224,1115],{"class":786},[250,26226,26227],{"class":912}," acc ",[250,26229,25381],{"class":786},[250,26231,26232],{"class":912}," (s ",[250,26234,2261],{"class":786},[250,26236,26237],{"class":912}," mean) ",[250,26239,26240],{"class":786},"**",[250,26242,26137],{"class":778},[250,26244,7128],{"class":912},[250,26246,3542],{"class":778},[250,26248,1446],{"class":912},[250,26250,2293],{"class":786},[250,26252,26111],{"class":912},[250,26254,26255,26257,26260,26262,26264,26266,26269,26272,26275,26277,26279,26281,26283,26285],{"class":252,"line":358},[250,26256,1455],{"class":786},[250,26258,26259],{"class":778}," stdDev",[250,26261,1187],{"class":786},[250,26263,2277],{"class":912},[250,26265,2280],{"class":774},[250,26267,26268],{"class":912},"(Math.",[250,26270,26271],{"class":774},"sqrt",[250,26273,26274],{"class":912},"(variance) ",[250,26276,6594],{"class":786},[250,26278,1832],{"class":778},[250,26280,1446],{"class":912},[250,26282,2293],{"class":786},[250,26284,1832],{"class":778},[250,26286,1379],{"class":912},[250,26288,26289],{"class":252,"line":364},[250,26290,795],{"emptyLinePlaceholder":129},[250,26292,26293,26295],{"class":252,"line":370},[250,26294,1123],{"class":786},[250,26296,1118],{"class":912},[250,26298,26299,26302,26304,26307,26309,26311,26313,26315,26317],{"class":252,"line":376},[250,26300,26301],{"class":912},"    mean: Math.",[250,26303,2280],{"class":774},[250,26305,26306],{"class":912},"(mean ",[250,26308,6594],{"class":786},[250,26310,1832],{"class":778},[250,26312,1446],{"class":912},[250,26314,2293],{"class":786},[250,26316,1832],{"class":778},[250,26318,927],{"class":912},[250,26320,26321],{"class":252,"line":382},[250,26322,26323],{"class":912},"    median,\n",[250,26325,26326],{"class":252,"line":388},[250,26327,26328],{"class":912},"    stdDev,\n",[250,26330,26331,26334,26336,26338],{"class":252,"line":393},[250,26332,26333],{"class":912},"    highest: sorted[count ",[250,26335,2261],{"class":786},[250,26337,26174],{"class":778},[250,26339,14000],{"class":912},[250,26341,26342,26345,26347],{"class":252,"line":399},[250,26343,26344],{"class":912},"    lowest: sorted[",[250,26346,3542],{"class":778},[250,26348,14000],{"class":912},[250,26350,26351],{"class":252,"line":405},[250,26352,26353],{"class":912},"    count,\n",[250,26355,26356],{"class":252,"line":410},[250,26357,1161],{"class":912},[250,26359,26360],{"class":252,"line":415},[250,26361,991],{"class":912},[15,26363,26365],{"id":26364},"step-4-wire-up-the-entry-point","Step 4: Wire Up the Entry Point",[47,26367,26370],{"className":1010,"code":26368,"filename":26369,"language":1012,"meta":55,"style":55},"export { toLetterGrade, toGPA } from '.\u002Fgrades';\nexport { weightedAverage } from '.\u002Fweights';\nexport { curveByHighest, curveByMean } from '.\u002Fcurve';\nexport { classStats } from '.\u002Fstats';\nexport type { GradeScale, WeightedComponent, ClassStats } from '.\u002Ftypes';\n","src\u002Findex.ts",[39,26371,26372,26386,26400,26414,26428],{"__ignoreMap":55},[250,26373,26374,26376,26379,26381,26384],{"class":252,"line":253},[250,26375,1019],{"class":786},[250,26377,26378],{"class":912}," { toLetterGrade, toGPA } ",[250,26380,1769],{"class":786},[250,26382,26383],{"class":782}," '.\u002Fgrades'",[250,26385,1379],{"class":912},[250,26387,26388,26390,26393,26395,26398],{"class":252,"line":113},[250,26389,1019],{"class":786},[250,26391,26392],{"class":912}," { weightedAverage } ",[250,26394,1769],{"class":786},[250,26396,26397],{"class":782}," '.\u002Fweights'",[250,26399,1379],{"class":912},[250,26401,26402,26404,26407,26409,26412],{"class":252,"line":110},[250,26403,1019],{"class":786},[250,26405,26406],{"class":912}," { curveByHighest, curveByMean } ",[250,26408,1769],{"class":786},[250,26410,26411],{"class":782}," '.\u002Fcurve'",[250,26413,1379],{"class":912},[250,26415,26416,26418,26421,26423,26426],{"class":252,"line":269},[250,26417,1019],{"class":786},[250,26419,26420],{"class":912}," { classStats } ",[250,26422,1769],{"class":786},[250,26424,26425],{"class":782}," '.\u002Fstats'",[250,26427,1379],{"class":912},[250,26429,26430,26432,26434,26437,26439,26441],{"class":252,"line":275},[250,26431,1019],{"class":786},[250,26433,4974],{"class":786},[250,26435,26436],{"class":912}," { GradeScale, WeightedComponent, ClassStats } ",[250,26438,1769],{"class":786},[250,26440,24869],{"class":782},[250,26442,1379],{"class":912},[15,26444,26446],{"id":26445},"step-5-write-tests","Step 5: Write Tests",[20,26448,1092,26449,1007],{},[39,26450,26451],{},"src\u002Fgrades.test.ts",[47,26453,26455],{"className":1010,"code":26454,"filename":26451,"language":1012,"meta":55,"style":55},"import { describe, it, expect } from 'vitest';\nimport { toLetterGrade, toGPA } from '.\u002Fgrades';\nimport { weightedAverage } from '.\u002Fweights';\nimport { curveByHighest, curveByMean } from '.\u002Fcurve';\nimport { classStats } from '.\u002Fstats';\n\ndescribe('toLetterGrade', () => {\n  it('converts percentages to letter grades', () => {\n    expect(toLetterGrade(95)).toBe('A');\n    expect(toLetterGrade(83)).toBe('B');\n    expect(toLetterGrade(72)).toBe('C');\n    expect(toLetterGrade(65)).toBe('D');\n    expect(toLetterGrade(40)).toBe('F');\n  });\n\n  it('clamps out-of-range values', () => {\n    expect(toLetterGrade(110)).toBe('A');\n    expect(toLetterGrade(-5)).toBe('F');\n  });\n});\n\ndescribe('toGPA', () => {\n  it('converts to 4.0 scale', () => {\n    expect(toGPA(92)).toBe(4.0);\n    expect(toGPA(85)).toBe(3.0);\n    expect(toGPA(55)).toBe(0.0);\n  });\n});\n\ndescribe('weightedAverage', () => {\n  it('calculates weighted grade', () => {\n    const result = weightedAverage([\n      { name: 'Homework', score: 90, weight: 0.4 },\n      { name: 'Exam', score: 80, weight: 0.6 },\n    ]);\n    expect(result).toBe(84);\n  });\n\n  it('returns 0 for empty input', () => {\n    expect(weightedAverage([])).toBe(0);\n  });\n});\n\ndescribe('curveByHighest', () => {\n  it('curves scores up to target', () => {\n    const curved = curveByHighest([70, 80, 90], 100);\n    expect(curved).toEqual([80, 90, 100]);\n  });\n\n  it('does not curve if highest already meets target', () => {\n    const scores = [70, 80, 95];\n    expect(curveByHighest(scores, 100)).toEqual(scores);\n  });\n});\n\ndescribe('classStats', () => {\n  it('calculates stats correctly', () => {\n    const stats = classStats([90, 80, 70, 60, 50]);\n    expect(stats.mean).toBe(70);\n    expect(stats.median).toBe(70);\n    expect(stats.highest).toBe(90);\n    expect(stats.lowest).toBe(50);\n    expect(stats.count).toBe(5);\n  });\n});\n",[39,26456,26457,26471,26483,26495,26507,26519,26523,26539,26555,26582,26605,26628,26651,26674,26678,26682,26697,26720,26744,26748,26752,26756,26771,26786,26810,26833,26856,26860,26864,26868,26883,26898,26911,26928,26946,26951,26967,26971,26975,26990,27010,27014,27018,27022,27037,27052,27083,27107,27111,27115,27130,27153,27174,27178,27182,27186,27201,27216,27250,27265,27280,27295,27310,27325,27329],{"__ignoreMap":55},[250,26458,26459,26461,26464,26466,26469],{"class":252,"line":253},[250,26460,1763],{"class":786},[250,26462,26463],{"class":912}," { describe, it, expect } ",[250,26465,1769],{"class":786},[250,26467,26468],{"class":782}," 'vitest'",[250,26470,1379],{"class":912},[250,26472,26473,26475,26477,26479,26481],{"class":252,"line":113},[250,26474,1763],{"class":786},[250,26476,26378],{"class":912},[250,26478,1769],{"class":786},[250,26480,26383],{"class":782},[250,26482,1379],{"class":912},[250,26484,26485,26487,26489,26491,26493],{"class":252,"line":110},[250,26486,1763],{"class":786},[250,26488,26392],{"class":912},[250,26490,1769],{"class":786},[250,26492,26397],{"class":782},[250,26494,1379],{"class":912},[250,26496,26497,26499,26501,26503,26505],{"class":252,"line":269},[250,26498,1763],{"class":786},[250,26500,26406],{"class":912},[250,26502,1769],{"class":786},[250,26504,26411],{"class":782},[250,26506,1379],{"class":912},[250,26508,26509,26511,26513,26515,26517],{"class":252,"line":275},[250,26510,1763],{"class":786},[250,26512,26420],{"class":912},[250,26514,1769],{"class":786},[250,26516,26425],{"class":782},[250,26518,1379],{"class":912},[250,26520,26521],{"class":252,"line":281},[250,26522,795],{"emptyLinePlaceholder":129},[250,26524,26525,26528,26530,26533,26535,26537],{"class":252,"line":287},[250,26526,26527],{"class":774},"describe",[250,26529,1434],{"class":912},[250,26531,26532],{"class":782},"'toLetterGrade'",[250,26534,13157],{"class":912},[250,26536,1115],{"class":786},[250,26538,1118],{"class":912},[250,26540,26541,26544,26546,26549,26551,26553],{"class":252,"line":293},[250,26542,26543],{"class":774},"  it",[250,26545,1434],{"class":912},[250,26547,26548],{"class":782},"'converts percentages to letter grades'",[250,26550,13157],{"class":912},[250,26552,1115],{"class":786},[250,26554,1118],{"class":912},[250,26556,26557,26560,26562,26565,26567,26570,26573,26576,26578,26580],{"class":252,"line":299},[250,26558,26559],{"class":774},"    expect",[250,26561,1434],{"class":912},[250,26563,26564],{"class":774},"toLetterGrade",[250,26566,1434],{"class":912},[250,26568,26569],{"class":778},"95",[250,26571,26572],{"class":912},")).",[250,26574,26575],{"class":774},"toBe",[250,26577,1434],{"class":912},[250,26579,24900],{"class":782},[250,26581,1885],{"class":912},[250,26583,26584,26586,26588,26590,26592,26595,26597,26599,26601,26603],{"class":252,"line":132},[250,26585,26559],{"class":774},[250,26587,1434],{"class":912},[250,26589,26564],{"class":774},[250,26591,1434],{"class":912},[250,26593,26594],{"class":778},"83",[250,26596,26572],{"class":912},[250,26598,26575],{"class":774},[250,26600,1434],{"class":912},[250,26602,24925],{"class":782},[250,26604,1885],{"class":912},[250,26606,26607,26609,26611,26613,26615,26618,26620,26622,26624,26626],{"class":252,"line":310},[250,26608,26559],{"class":774},[250,26610,1434],{"class":912},[250,26612,26564],{"class":774},[250,26614,1434],{"class":912},[250,26616,26617],{"class":778},"72",[250,26619,26572],{"class":912},[250,26621,26575],{"class":774},[250,26623,1434],{"class":912},[250,26625,24948],{"class":782},[250,26627,1885],{"class":912},[250,26629,26630,26632,26634,26636,26638,26641,26643,26645,26647,26649],{"class":252,"line":316},[250,26631,26559],{"class":774},[250,26633,1434],{"class":912},[250,26635,26564],{"class":774},[250,26637,1434],{"class":912},[250,26639,26640],{"class":778},"65",[250,26642,26572],{"class":912},[250,26644,26575],{"class":774},[250,26646,1434],{"class":912},[250,26648,24972],{"class":782},[250,26650,1885],{"class":912},[250,26652,26653,26655,26657,26659,26661,26664,26666,26668,26670,26672],{"class":252,"line":322},[250,26654,26559],{"class":774},[250,26656,1434],{"class":912},[250,26658,26564],{"class":774},[250,26660,1434],{"class":912},[250,26662,26663],{"class":778},"40",[250,26665,26572],{"class":912},[250,26667,26575],{"class":774},[250,26669,1434],{"class":912},[250,26671,24995],{"class":782},[250,26673,1885],{"class":912},[250,26675,26676],{"class":252,"line":328},[250,26677,6749],{"class":912},[250,26679,26680],{"class":252,"line":334},[250,26681,795],{"emptyLinePlaceholder":129},[250,26683,26684,26686,26688,26691,26693,26695],{"class":252,"line":340},[250,26685,26543],{"class":774},[250,26687,1434],{"class":912},[250,26689,26690],{"class":782},"'clamps out-of-range values'",[250,26692,13157],{"class":912},[250,26694,1115],{"class":786},[250,26696,1118],{"class":912},[250,26698,26699,26701,26703,26705,26707,26710,26712,26714,26716,26718],{"class":252,"line":346},[250,26700,26559],{"class":774},[250,26702,1434],{"class":912},[250,26704,26564],{"class":774},[250,26706,1434],{"class":912},[250,26708,26709],{"class":778},"110",[250,26711,26572],{"class":912},[250,26713,26575],{"class":774},[250,26715,1434],{"class":912},[250,26717,24900],{"class":782},[250,26719,1885],{"class":912},[250,26721,26722,26724,26726,26728,26730,26732,26734,26736,26738,26740,26742],{"class":252,"line":352},[250,26723,26559],{"class":774},[250,26725,1434],{"class":912},[250,26727,26564],{"class":774},[250,26729,1434],{"class":912},[250,26731,2261],{"class":786},[250,26733,1297],{"class":778},[250,26735,26572],{"class":912},[250,26737,26575],{"class":774},[250,26739,1434],{"class":912},[250,26741,24995],{"class":782},[250,26743,1885],{"class":912},[250,26745,26746],{"class":252,"line":358},[250,26747,6749],{"class":912},[250,26749,26750],{"class":252,"line":364},[250,26751,1077],{"class":912},[250,26753,26754],{"class":252,"line":370},[250,26755,795],{"emptyLinePlaceholder":129},[250,26757,26758,26760,26762,26765,26767,26769],{"class":252,"line":376},[250,26759,26527],{"class":774},[250,26761,1434],{"class":912},[250,26763,26764],{"class":782},"'toGPA'",[250,26766,13157],{"class":912},[250,26768,1115],{"class":786},[250,26770,1118],{"class":912},[250,26772,26773,26775,26777,26780,26782,26784],{"class":252,"line":382},[250,26774,26543],{"class":774},[250,26776,1434],{"class":912},[250,26778,26779],{"class":782},"'converts to 4.0 scale'",[250,26781,13157],{"class":912},[250,26783,1115],{"class":786},[250,26785,1118],{"class":912},[250,26787,26788,26790,26792,26795,26797,26800,26802,26804,26806,26808],{"class":252,"line":388},[250,26789,26559],{"class":774},[250,26791,1434],{"class":912},[250,26793,26794],{"class":774},"toGPA",[250,26796,1434],{"class":912},[250,26798,26799],{"class":778},"92",[250,26801,26572],{"class":912},[250,26803,26575],{"class":774},[250,26805,1434],{"class":912},[250,26807,1283],{"class":778},[250,26809,1885],{"class":912},[250,26811,26812,26814,26816,26818,26820,26823,26825,26827,26829,26831],{"class":252,"line":393},[250,26813,26559],{"class":774},[250,26815,1434],{"class":912},[250,26817,26794],{"class":774},[250,26819,1434],{"class":912},[250,26821,26822],{"class":778},"85",[250,26824,26572],{"class":912},[250,26826,26575],{"class":774},[250,26828,1434],{"class":912},[250,26830,1236],{"class":778},[250,26832,1885],{"class":912},[250,26834,26835,26837,26839,26841,26843,26846,26848,26850,26852,26854],{"class":252,"line":399},[250,26836,26559],{"class":774},[250,26838,1434],{"class":912},[250,26840,26794],{"class":774},[250,26842,1434],{"class":912},[250,26844,26845],{"class":778},"55",[250,26847,26572],{"class":912},[250,26849,26575],{"class":774},[250,26851,1434],{"class":912},[250,26853,25009],{"class":778},[250,26855,1885],{"class":912},[250,26857,26858],{"class":252,"line":405},[250,26859,6749],{"class":912},[250,26861,26862],{"class":252,"line":410},[250,26863,1077],{"class":912},[250,26865,26866],{"class":252,"line":415},[250,26867,795],{"emptyLinePlaceholder":129},[250,26869,26870,26872,26874,26877,26879,26881],{"class":252,"line":420},[250,26871,26527],{"class":774},[250,26873,1434],{"class":912},[250,26875,26876],{"class":782},"'weightedAverage'",[250,26878,13157],{"class":912},[250,26880,1115],{"class":786},[250,26882,1118],{"class":912},[250,26884,26885,26887,26889,26892,26894,26896],{"class":252,"line":426},[250,26886,26543],{"class":774},[250,26888,1434],{"class":912},[250,26890,26891],{"class":782},"'calculates weighted grade'",[250,26893,13157],{"class":912},[250,26895,1115],{"class":786},[250,26897,1118],{"class":912},[250,26899,26900,26902,26905,26907,26909],{"class":252,"line":431},[250,26901,6403],{"class":786},[250,26903,26904],{"class":778}," result",[250,26906,1187],{"class":786},[250,26908,25302],{"class":774},[250,26910,25520],{"class":912},[250,26912,26913,26916,26918,26920,26922,26924,26926],{"class":252,"line":436},[250,26914,26915],{"class":912},"      { name: ",[250,26917,25528],{"class":782},[250,26919,25531],{"class":912},[250,26921,24906],{"class":778},[250,26923,25537],{"class":912},[250,26925,25577],{"class":778},[250,26927,1219],{"class":912},[250,26929,26930,26932,26935,26937,26939,26941,26944],{"class":252,"line":442},[250,26931,26915],{"class":912},[250,26933,26934],{"class":782},"'Exam'",[250,26936,25531],{"class":912},[250,26938,24930],{"class":778},[250,26940,25537],{"class":912},[250,26942,26943],{"class":778},"0.6",[250,26945,1219],{"class":912},[250,26947,26948],{"class":252,"line":447},[250,26949,26950],{"class":912},"    ]);\n",[250,26952,26953,26955,26958,26960,26962,26965],{"class":252,"line":453},[250,26954,26559],{"class":774},[250,26956,26957],{"class":912},"(result).",[250,26959,26575],{"class":774},[250,26961,1434],{"class":912},[250,26963,26964],{"class":778},"84",[250,26966,1885],{"class":912},[250,26968,26969],{"class":252,"line":459},[250,26970,6749],{"class":912},[250,26972,26973],{"class":252,"line":465},[250,26974,795],{"emptyLinePlaceholder":129},[250,26976,26977,26979,26981,26984,26986,26988],{"class":252,"line":471},[250,26978,26543],{"class":774},[250,26980,1434],{"class":912},[250,26982,26983],{"class":782},"'returns 0 for empty input'",[250,26985,13157],{"class":912},[250,26987,1115],{"class":786},[250,26989,1118],{"class":912},[250,26991,26992,26994,26996,26999,27002,27004,27006,27008],{"class":252,"line":2201},[250,26993,26559],{"class":774},[250,26995,1434],{"class":912},[250,26997,26998],{"class":774},"weightedAverage",[250,27000,27001],{"class":912},"([])).",[250,27003,26575],{"class":774},[250,27005,1434],{"class":912},[250,27007,3542],{"class":778},[250,27009,1885],{"class":912},[250,27011,27012],{"class":252,"line":2207},[250,27013,6749],{"class":912},[250,27015,27016],{"class":252,"line":2213},[250,27017,1077],{"class":912},[250,27019,27020],{"class":252,"line":2218},[250,27021,795],{"emptyLinePlaceholder":129},[250,27023,27024,27026,27028,27031,27033,27035],{"class":252,"line":2223},[250,27025,26527],{"class":774},[250,27027,1434],{"class":912},[250,27029,27030],{"class":782},"'curveByHighest'",[250,27032,13157],{"class":912},[250,27034,1115],{"class":786},[250,27036,1118],{"class":912},[250,27038,27039,27041,27043,27046,27048,27050],{"class":252,"line":2239},[250,27040,26543],{"class":774},[250,27042,1434],{"class":912},[250,27044,27045],{"class":782},"'curves scores up to target'",[250,27047,13157],{"class":912},[250,27049,1115],{"class":786},[250,27051,1118],{"class":912},[250,27053,27054,27056,27059,27061,27063,27066,27068,27070,27072,27074,27076,27079,27081],{"class":252,"line":2244},[250,27055,6403],{"class":786},[250,27057,27058],{"class":778}," curved",[250,27060,1187],{"class":786},[250,27062,25608],{"class":774},[250,27064,27065],{"class":912},"([",[250,27067,24953],{"class":778},[250,27069,7128],{"class":912},[250,27071,24930],{"class":778},[250,27073,7128],{"class":912},[250,27075,24906],{"class":778},[250,27077,27078],{"class":912},"], ",[250,27080,1590],{"class":778},[250,27082,1885],{"class":912},[250,27084,27085,27087,27090,27093,27095,27097,27099,27101,27103,27105],{"class":252,"line":2267},[250,27086,26559],{"class":774},[250,27088,27089],{"class":912},"(curved).",[250,27091,27092],{"class":774},"toEqual",[250,27094,27065],{"class":912},[250,27096,24930],{"class":778},[250,27098,7128],{"class":912},[250,27100,24906],{"class":778},[250,27102,7128],{"class":912},[250,27104,1590],{"class":778},[250,27106,25584],{"class":912},[250,27108,27109],{"class":252,"line":2301},[250,27110,6749],{"class":912},[250,27112,27113],{"class":252,"line":2306},[250,27114,795],{"emptyLinePlaceholder":129},[250,27116,27117,27119,27121,27124,27126,27128],{"class":252,"line":2320},[250,27118,26543],{"class":774},[250,27120,1434],{"class":912},[250,27122,27123],{"class":782},"'does not curve if highest already meets target'",[250,27125,13157],{"class":912},[250,27127,1115],{"class":786},[250,27129,1118],{"class":912},[250,27131,27132,27134,27137,27139,27141,27143,27145,27147,27149,27151],{"class":252,"line":2340},[250,27133,6403],{"class":786},[250,27135,27136],{"class":778}," scores",[250,27138,1187],{"class":786},[250,27140,7123],{"class":912},[250,27142,24953],{"class":778},[250,27144,7128],{"class":912},[250,27146,24930],{"class":778},[250,27148,7128],{"class":912},[250,27150,26569],{"class":778},[250,27152,1317],{"class":912},[250,27154,27155,27157,27159,27162,27165,27167,27169,27171],{"class":252,"line":2360},[250,27156,26559],{"class":774},[250,27158,1434],{"class":912},[250,27160,27161],{"class":774},"curveByHighest",[250,27163,27164],{"class":912},"(scores, ",[250,27166,1590],{"class":778},[250,27168,26572],{"class":912},[250,27170,27092],{"class":774},[250,27172,27173],{"class":912},"(scores);\n",[250,27175,27176],{"class":252,"line":2397},[250,27177,6749],{"class":912},[250,27179,27180],{"class":252,"line":2402},[250,27181,1077],{"class":912},[250,27183,27184],{"class":252,"line":2407},[250,27185,795],{"emptyLinePlaceholder":129},[250,27187,27188,27190,27192,27195,27197,27199],{"class":252,"line":6667},[250,27189,26527],{"class":774},[250,27191,1434],{"class":912},[250,27193,27194],{"class":782},"'classStats'",[250,27196,13157],{"class":912},[250,27198,1115],{"class":786},[250,27200,1118],{"class":912},[250,27202,27203,27205,27207,27210,27212,27214],{"class":252,"line":6672},[250,27204,26543],{"class":774},[250,27206,1434],{"class":912},[250,27208,27209],{"class":782},"'calculates stats correctly'",[250,27211,13157],{"class":912},[250,27213,1115],{"class":786},[250,27215,1118],{"class":912},[250,27217,27218,27220,27223,27225,27227,27229,27231,27233,27235,27237,27239,27241,27243,27245,27248],{"class":252,"line":6688},[250,27219,6403],{"class":786},[250,27221,27222],{"class":778}," stats",[250,27224,1187],{"class":786},[250,27226,25931],{"class":774},[250,27228,27065],{"class":912},[250,27230,24906],{"class":778},[250,27232,7128],{"class":912},[250,27234,24930],{"class":778},[250,27236,7128],{"class":912},[250,27238,24953],{"class":778},[250,27240,7128],{"class":912},[250,27242,15548],{"class":778},[250,27244,7128],{"class":912},[250,27246,27247],{"class":778},"50",[250,27249,25584],{"class":912},[250,27251,27252,27254,27257,27259,27261,27263],{"class":252,"line":6694},[250,27253,26559],{"class":774},[250,27255,27256],{"class":912},"(stats.mean).",[250,27258,26575],{"class":774},[250,27260,1434],{"class":912},[250,27262,24953],{"class":778},[250,27264,1885],{"class":912},[250,27266,27267,27269,27272,27274,27276,27278],{"class":252,"line":6707},[250,27268,26559],{"class":774},[250,27270,27271],{"class":912},"(stats.median).",[250,27273,26575],{"class":774},[250,27275,1434],{"class":912},[250,27277,24953],{"class":778},[250,27279,1885],{"class":912},[250,27281,27282,27284,27287,27289,27291,27293],{"class":252,"line":6716},[250,27283,26559],{"class":774},[250,27285,27286],{"class":912},"(stats.highest).",[250,27288,26575],{"class":774},[250,27290,1434],{"class":912},[250,27292,24906],{"class":778},[250,27294,1885],{"class":912},[250,27296,27297,27299,27302,27304,27306,27308],{"class":252,"line":6722},[250,27298,26559],{"class":774},[250,27300,27301],{"class":912},"(stats.lowest).",[250,27303,26575],{"class":774},[250,27305,1434],{"class":912},[250,27307,27247],{"class":778},[250,27309,1885],{"class":912},[250,27311,27312,27314,27317,27319,27321,27323],{"class":252,"line":6734},[250,27313,26559],{"class":774},[250,27315,27316],{"class":912},"(stats.count).",[250,27318,26575],{"class":774},[250,27320,1434],{"class":912},[250,27322,1297],{"class":778},[250,27324,1885],{"class":912},[250,27326,27327],{"class":252,"line":6746},[250,27328,6749],{"class":912},[250,27330,27331],{"class":252,"line":6752},[250,27332,1077],{"class":912},[20,27334,27335],{},"Run the tests:",[47,27337,27339],{"className":758,"code":27338,"language":761,"meta":55,"style":55},"vp test\n",[39,27340,27341],{"__ignoreMap":55},[250,27342,27343,27345],{"class":252,"line":253},[250,27344,24571],{"class":774},[250,27346,27347],{"class":782}," test\n",[161,27349,27352],{"icon":27350,"title":27351},"✅","Vitest Is Built In",[20,27353,27354,27355,27358,27359,27362],{},"No extra install or config. ",[39,27356,27357],{},"vp test"," picks up ",[39,27360,27361],{},".test.ts"," files automatically using the same transform pipeline as your source code.",[15,27364,27366],{"id":27365},"step-6-configure-packaging","Step 6: Configure Packaging",[20,27368,1003,27369,1007],{},[39,27370,27371],{},"vite.config.ts",[47,27373,27375],{"className":1010,"code":27374,"filename":27371,"language":1012,"meta":55,"style":55},"import { defineConfig } from 'vite-plus';\n\nexport default defineConfig({\n  pack: {\n    entry: ['src\u002Findex.ts'],\n    dts: true,\n    format: ['esm', 'cjs'],\n    sourcemap: true,\n  },\n});\n",[39,27376,27377,27390,27394,27404,27409,27419,27428,27443,27452,27456],{"__ignoreMap":55},[250,27378,27379,27381,27383,27385,27388],{"class":252,"line":253},[250,27380,1763],{"class":786},[250,27382,4280],{"class":912},[250,27384,1769],{"class":786},[250,27386,27387],{"class":782}," 'vite-plus'",[250,27389,1379],{"class":912},[250,27391,27392],{"class":252,"line":113},[250,27393,795],{"emptyLinePlaceholder":129},[250,27395,27396,27398,27400,27402],{"class":252,"line":110},[250,27397,1019],{"class":786},[250,27399,1022],{"class":786},[250,27401,4300],{"class":774},[250,27403,1028],{"class":912},[250,27405,27406],{"class":252,"line":269},[250,27407,27408],{"class":912},"  pack: {\n",[250,27410,27411,27414,27417],{"class":252,"line":275},[250,27412,27413],{"class":912},"    entry: [",[250,27415,27416],{"class":782},"'src\u002Findex.ts'",[250,27418,14000],{"class":912},[250,27420,27421,27424,27426],{"class":252,"line":281},[250,27422,27423],{"class":912},"    dts: ",[250,27425,1066],{"class":778},[250,27427,927],{"class":912},[250,27429,27430,27433,27436,27438,27441],{"class":252,"line":287},[250,27431,27432],{"class":912},"    format: [",[250,27434,27435],{"class":782},"'esm'",[250,27437,7128],{"class":912},[250,27439,27440],{"class":782},"'cjs'",[250,27442,14000],{"class":912},[250,27444,27445,27448,27450],{"class":252,"line":293},[250,27446,27447],{"class":912},"    sourcemap: ",[250,27449,1066],{"class":778},[250,27451,927],{"class":912},[250,27453,27454],{"class":252,"line":299},[250,27455,1048],{"class":912},[250,27457,27458],{"class":252,"line":132},[250,27459,1077],{"class":912},[20,27461,27462],{},"This tells Vite+ to:",[561,27464,27465,27471,27474],{},[564,27466,27467,27468,2390],{},"Generate TypeScript declaration files (",[39,27469,27470],{},".d.ts",[564,27472,27473],{},"Output both ESM and CJS formats",[564,27475,27476],{},"Include source maps for debugging",[15,27478,27480],{"id":27479},"step-7-build-the-package","Step 7: Build the Package",[47,27482,27484],{"className":758,"code":27483,"language":761,"meta":55,"style":55},"vp pack\n",[39,27485,27486],{"__ignoreMap":55},[250,27487,27488,27490],{"class":252,"line":253},[250,27489,24571],{"class":774},[250,27491,27492],{"class":782}," pack\n",[20,27494,27495],{},"You'll see output like:",[47,27497,27499],{"className":12725,"code":27498,"language":12727,"meta":55,"style":55},"CLI Building entry: src\u002Findex.ts\nESM dist\u002Findex.js     2.1 kB\nCJS dist\u002Findex.cjs    2.2 kB\nDTS dist\u002Findex.d.ts   1.4 kB\n✓ Pack completed in 94ms\n",[39,27500,27501,27506,27511,27516,27521],{"__ignoreMap":55},[250,27502,27503],{"class":252,"line":253},[250,27504,27505],{},"CLI Building entry: src\u002Findex.ts\n",[250,27507,27508],{"class":252,"line":113},[250,27509,27510],{},"ESM dist\u002Findex.js     2.1 kB\n",[250,27512,27513],{"class":252,"line":110},[250,27514,27515],{},"CJS dist\u002Findex.cjs    2.2 kB\n",[250,27517,27518],{"class":252,"line":269},[250,27519,27520],{},"DTS dist\u002Findex.d.ts   1.4 kB\n",[250,27522,27523],{"class":252,"line":275},[250,27524,27525],{},"✓ Pack completed in 94ms\n",[24,27527,27528],{"type":631},[20,27529,27530,27532,27533,27538],{},[39,27531,24502],{}," uses ",[203,27534,27537],{"href":27535,"rel":27536},"https:\u002F\u002Ftsdown.dev\u002F",[207],"tsdown"," under the hood — powered by Rolldown, which itself is written in Rust. That's why it's fast.",[15,27540,27542],{"id":27541},"step-8-publish-to-npm","Step 8: Publish to npm",[20,27544,1003,27545,27547],{},[39,27546,904],{}," with the essentials:",[47,27549,27551],{"className":902,"code":27550,"filename":904,"language":905,"meta":55,"style":55},"{\n  \"name\": \"teacher-toolkit\",\n  \"version\": \"1.0.0\",\n  \"description\": \"Grade calculation utilities for teachers\",\n  \"type\": \"module\",\n  \"main\": \"dist\u002Findex.cjs\",\n  \"module\": \"dist\u002Findex.js\",\n  \"types\": \"dist\u002Findex.d.ts\",\n  \"exports\": {\n    \".\": {\n      \"import\": \".\u002Fdist\u002Findex.js\",\n      \"require\": \".\u002Fdist\u002Findex.cjs\",\n      \"types\": \".\u002Fdist\u002Findex.d.ts\"\n    }\n  },\n  \"files\": [\"dist\"],\n  \"license\": \"MIT\"\n}\n",[39,27552,27553,27557,27569,27581,27593,27605,27617,27629,27641,27648,27655,27667,27679,27689,27693,27697,27710,27720],{"__ignoreMap":55},[250,27554,27555],{"class":252,"line":253},[250,27556,913],{"class":912},[250,27558,27559,27562,27564,27567],{"class":252,"line":113},[250,27560,27561],{"class":778},"  \"name\"",[250,27563,921],{"class":912},[250,27565,27566],{"class":782},"\"teacher-toolkit\"",[250,27568,927],{"class":912},[250,27570,27571,27574,27576,27579],{"class":252,"line":110},[250,27572,27573],{"class":778},"  \"version\"",[250,27575,921],{"class":912},[250,27577,27578],{"class":782},"\"1.0.0\"",[250,27580,927],{"class":912},[250,27582,27583,27586,27588,27591],{"class":252,"line":269},[250,27584,27585],{"class":778},"  \"description\"",[250,27587,921],{"class":912},[250,27589,27590],{"class":782},"\"Grade calculation utilities for teachers\"",[250,27592,927],{"class":912},[250,27594,27595,27598,27600,27603],{"class":252,"line":275},[250,27596,27597],{"class":778},"  \"type\"",[250,27599,921],{"class":912},[250,27601,27602],{"class":782},"\"module\"",[250,27604,927],{"class":912},[250,27606,27607,27610,27612,27615],{"class":252,"line":281},[250,27608,27609],{"class":778},"  \"main\"",[250,27611,921],{"class":912},[250,27613,27614],{"class":782},"\"dist\u002Findex.cjs\"",[250,27616,927],{"class":912},[250,27618,27619,27622,27624,27627],{"class":252,"line":287},[250,27620,27621],{"class":778},"  \"module\"",[250,27623,921],{"class":912},[250,27625,27626],{"class":782},"\"dist\u002Findex.js\"",[250,27628,927],{"class":912},[250,27630,27631,27634,27636,27639],{"class":252,"line":293},[250,27632,27633],{"class":778},"  \"types\"",[250,27635,921],{"class":912},[250,27637,27638],{"class":782},"\"dist\u002Findex.d.ts\"",[250,27640,927],{"class":912},[250,27642,27643,27646],{"class":252,"line":299},[250,27644,27645],{"class":778},"  \"exports\"",[250,27647,935],{"class":912},[250,27649,27650,27653],{"class":252,"line":132},[250,27651,27652],{"class":778},"    \".\"",[250,27654,935],{"class":912},[250,27656,27657,27660,27662,27665],{"class":252,"line":310},[250,27658,27659],{"class":778},"      \"import\"",[250,27661,921],{"class":912},[250,27663,27664],{"class":782},"\".\u002Fdist\u002Findex.js\"",[250,27666,927],{"class":912},[250,27668,27669,27672,27674,27677],{"class":252,"line":316},[250,27670,27671],{"class":778},"      \"require\"",[250,27673,921],{"class":912},[250,27675,27676],{"class":782},"\".\u002Fdist\u002Findex.cjs\"",[250,27678,927],{"class":912},[250,27680,27681,27684,27686],{"class":252,"line":322},[250,27682,27683],{"class":778},"      \"types\"",[250,27685,921],{"class":912},[250,27687,27688],{"class":782},"\".\u002Fdist\u002Findex.d.ts\"\n",[250,27690,27691],{"class":252,"line":328},[250,27692,3684],{"class":912},[250,27694,27695],{"class":252,"line":334},[250,27696,1048],{"class":912},[250,27698,27699,27702,27705,27708],{"class":252,"line":340},[250,27700,27701],{"class":778},"  \"files\"",[250,27703,27704],{"class":912},": [",[250,27706,27707],{"class":782},"\"dist\"",[250,27709,14000],{"class":912},[250,27711,27712,27715,27717],{"class":252,"line":346},[250,27713,27714],{"class":778},"  \"license\"",[250,27716,921],{"class":912},[250,27718,27719],{"class":782},"\"MIT\"\n",[250,27721,27722],{"class":252,"line":352},[250,27723,991],{"class":912},[20,27725,27726],{},"Then publish:",[47,27728,27730],{"className":758,"code":27729,"language":761,"meta":55,"style":55},"npm publish\n",[39,27731,27732],{"__ignoreMap":55},[250,27733,27734,27736],{"class":252,"line":253},[250,27735,4226],{"class":774},[250,27737,27738],{"class":782}," publish\n",[15,27740,27742],{"id":27741},"using-the-package","Using the Package",[20,27744,27745],{},"Once published, any teacher or developer can install it:",[47,27747,27749],{"className":758,"code":27748,"language":761,"meta":55,"style":55},"npm install teacher-toolkit\n",[39,27750,27751],{"__ignoreMap":55},[250,27752,27753,27755,27757],{"class":252,"line":253},[250,27754,4226],{"class":774},[250,27756,808],{"class":782},[250,27758,24583],{"class":782},[47,27760,27762],{"className":1010,"code":27761,"language":1012,"meta":55,"style":55},"import { toLetterGrade, weightedAverage, curveByHighest, classStats } from 'teacher-toolkit';\n\n\u002F\u002F Convert a score\ntoLetterGrade(87);              \u002F\u002F => \"B\"\n\n\u002F\u002F Calculate a final grade\nconst final = weightedAverage([\n  { name: 'Quiz', score: 92, weight: 0.2 },\n  { name: 'Project', score: 78, weight: 0.3 },\n  { name: 'Final', score: 85, weight: 0.5 },\n]);                             \u002F\u002F => 84.2\n\n\u002F\u002F Curve a set of exam scores\nconst curved = curveByHighest([62, 74, 81, 90]);  \u002F\u002F => [72, 84, 91, 100]\n\n\u002F\u002F Get class overview\nclassStats([90, 82, 75, 68, 55]);\n\u002F\u002F => { mean: 74, median: 75, stdDev: 12.49, highest: 90, lowest: 55, count: 5 }\n",[39,27763,27764,27778,27782,27787,27802,27806,27811,27824,27842,27860,27877,27885,27889,27894,27929,27933,27938,27967],{"__ignoreMap":55},[250,27765,27766,27768,27771,27773,27776],{"class":252,"line":253},[250,27767,1763],{"class":786},[250,27769,27770],{"class":912}," { toLetterGrade, weightedAverage, curveByHighest, classStats } ",[250,27772,1769],{"class":786},[250,27774,27775],{"class":782}," 'teacher-toolkit'",[250,27777,1379],{"class":912},[250,27779,27780],{"class":252,"line":113},[250,27781,795],{"emptyLinePlaceholder":129},[250,27783,27784],{"class":252,"line":110},[250,27785,27786],{"class":768},"\u002F\u002F Convert a score\n",[250,27788,27789,27791,27793,27796,27799],{"class":252,"line":269},[250,27790,26564],{"class":774},[250,27792,1434],{"class":912},[250,27794,27795],{"class":778},"87",[250,27797,27798],{"class":912},");              ",[250,27800,27801],{"class":768},"\u002F\u002F => \"B\"\n",[250,27803,27804],{"class":252,"line":275},[250,27805,795],{"emptyLinePlaceholder":129},[250,27807,27808],{"class":252,"line":281},[250,27809,27810],{"class":768},"\u002F\u002F Calculate a final grade\n",[250,27812,27813,27815,27818,27820,27822],{"class":252,"line":287},[250,27814,1181],{"class":786},[250,27816,27817],{"class":778}," final",[250,27819,1187],{"class":786},[250,27821,25302],{"class":774},[250,27823,25520],{"class":912},[250,27825,27826,27828,27831,27833,27835,27837,27840],{"class":252,"line":293},[250,27827,25525],{"class":912},[250,27829,27830],{"class":782},"'Quiz'",[250,27832,25531],{"class":912},[250,27834,26799],{"class":778},[250,27836,25537],{"class":912},[250,27838,27839],{"class":778},"0.2",[250,27841,1219],{"class":912},[250,27843,27844,27846,27849,27851,27854,27856,27858],{"class":252,"line":299},[250,27845,25525],{"class":912},[250,27847,27848],{"class":782},"'Project'",[250,27850,25531],{"class":912},[250,27852,27853],{"class":778},"78",[250,27855,25537],{"class":912},[250,27857,25540],{"class":778},[250,27859,1219],{"class":912},[250,27861,27862,27864,27867,27869,27871,27873,27875],{"class":252,"line":132},[250,27863,25525],{"class":912},[250,27865,27866],{"class":782},"'Final'",[250,27868,25531],{"class":912},[250,27870,26822],{"class":778},[250,27872,25537],{"class":912},[250,27874,19138],{"class":778},[250,27876,1219],{"class":912},[250,27878,27879,27882],{"class":252,"line":310},[250,27880,27881],{"class":912},"]);                             ",[250,27883,27884],{"class":768},"\u002F\u002F => 84.2\n",[250,27886,27887],{"class":252,"line":316},[250,27888,795],{"emptyLinePlaceholder":129},[250,27890,27891],{"class":252,"line":322},[250,27892,27893],{"class":768},"\u002F\u002F Curve a set of exam scores\n",[250,27895,27896,27898,27900,27902,27904,27906,27909,27911,27914,27916,27919,27921,27923,27926],{"class":252,"line":328},[250,27897,1181],{"class":786},[250,27899,27058],{"class":778},[250,27901,1187],{"class":786},[250,27903,25608],{"class":774},[250,27905,27065],{"class":912},[250,27907,27908],{"class":778},"62",[250,27910,7128],{"class":912},[250,27912,27913],{"class":778},"74",[250,27915,7128],{"class":912},[250,27917,27918],{"class":778},"81",[250,27920,7128],{"class":912},[250,27922,24906],{"class":778},[250,27924,27925],{"class":912},"]);  ",[250,27927,27928],{"class":768},"\u002F\u002F => [72, 84, 91, 100]\n",[250,27930,27931],{"class":252,"line":334},[250,27932,795],{"emptyLinePlaceholder":129},[250,27934,27935],{"class":252,"line":340},[250,27936,27937],{"class":768},"\u002F\u002F Get class overview\n",[250,27939,27940,27943,27945,27947,27949,27951,27953,27956,27958,27961,27963,27965],{"class":252,"line":346},[250,27941,27942],{"class":774},"classStats",[250,27944,27065],{"class":912},[250,27946,24906],{"class":778},[250,27948,7128],{"class":912},[250,27950,25572],{"class":778},[250,27952,7128],{"class":912},[250,27954,27955],{"class":778},"75",[250,27957,7128],{"class":912},[250,27959,27960],{"class":778},"68",[250,27962,7128],{"class":912},[250,27964,26845],{"class":778},[250,27966,25584],{"class":912},[250,27968,27969],{"class":252,"line":352},[250,27970,27971],{"class":768},"\u002F\u002F => { mean: 74, median: 75, stdDev: 12.49, highest: 90, lowest: 55, count: 5 }\n",[15,27973,27975],{"id":27974},"full-workflow-recap","Full Workflow Recap",[47,27977,27979],{"className":758,"code":27978,"language":761,"meta":55,"style":55},"vp create vite:library -- teacher-toolkit   # Scaffold\nvp install                                   # Install deps\nvp check                                     # Format + lint + type-check\nvp test                                      # Run tests\nvp pack                                      # Build for npm\nnpm publish                                  # Ship it\n",[39,27980,27981,27997,28006,28016,28026,28036],{"__ignoreMap":55},[250,27982,27983,27985,27987,27989,27991,27994],{"class":252,"line":253},[250,27984,24571],{"class":774},[250,27986,24574],{"class":782},[250,27988,24577],{"class":782},[250,27990,24580],{"class":778},[250,27992,27993],{"class":782}," teacher-toolkit",[250,27995,27996],{"class":768},"   # Scaffold\n",[250,27998,27999,28001,28003],{"class":252,"line":113},[250,28000,24571],{"class":774},[250,28002,808],{"class":782},[250,28004,28005],{"class":768},"                                   # Install deps\n",[250,28007,28008,28010,28013],{"class":252,"line":110},[250,28009,24571],{"class":774},[250,28011,28012],{"class":782}," check",[250,28014,28015],{"class":768},"                                     # Format + lint + type-check\n",[250,28017,28018,28020,28023],{"class":252,"line":269},[250,28019,24571],{"class":774},[250,28021,28022],{"class":782}," test",[250,28024,28025],{"class":768},"                                      # Run tests\n",[250,28027,28028,28030,28033],{"class":252,"line":275},[250,28029,24571],{"class":774},[250,28031,28032],{"class":782}," pack",[250,28034,28035],{"class":768},"                                      # Build for npm\n",[250,28037,28038,28040,28043],{"class":252,"line":281},[250,28039,4226],{"class":774},[250,28041,28042],{"class":782}," publish",[250,28044,28045],{"class":768},"                                  # Ship it\n",[20,28047,28048,28049,2230],{},"Six commands. Zero config files beyond ",[39,28050,27371],{},[10834,28052,28053,28057],{},[2459,28054,28056],{"id":28055},"why-vite-for-libraries","Why Vite+ for Libraries?",[20,28058,28059,28060,28062],{},"With ",[39,28061,24502],{},", you get DTS generation, dual ESM\u002FCJS output, and source maps without touching Rollup, tsup, or unbuild configs. The Vitest and Oxc integrations mean testing and linting are already part of the workflow.",[15,28064,28066],{"id":28065},"ideas-to-extend-this-package","Ideas to Extend This Package",[561,28068,28069,28075,28081,28087,28093],{},[564,28070,28071,28074],{},[546,28072,28073],{},"Letter grade with +\u002F-"," — A+, A, A-, B+, etc.",[564,28076,28077,28080],{},[546,28078,28079],{},"Rubric scoring"," — multi-criteria evaluation helpers",[564,28082,28083,28086],{},[546,28084,28085],{},"Attendance percentage"," — days present vs. total",[564,28088,28089,28092],{},[546,28090,28091],{},"Assignment deadline tracker"," — date math utilities",[564,28094,28095,28098],{},[546,28096,28097],{},"Export to CSV"," — grade reports for school systems",[15,28100,3352],{"id":3351},[20,28102,28103,28104,28107,28108,28110],{},"Vite+ makes it trivial to go from idea to published package. The ",[39,28105,28106],{},"vite:library"," template, built-in Vitest, and ",[39,28109,24502],{}," remove the usual friction of library authoring — no build config rabbit holes, no DTS plugin debugging.",[20,28112,28113],{},"For teachers and education developers, this means you can spend your time solving real problems (grade calculations, student analytics) instead of fighting tooling.",[20,28115,28116],{},"Ship the package. Help a teacher.",[500,28118,28119],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":55,"searchDepth":110,"depth":110,"links":28121},[28122,28123,28124,28125],{"id":24848,"depth":113,"text":24849},{"id":25267,"depth":113,"text":25268},{"id":25592,"depth":113,"text":25593},{"id":25896,"depth":113,"text":25897,"children":28126},[28127],{"id":28055,"depth":110,"text":28056},"2026-03-30","A hands-on guide to packaging a reusable npm library for educators using Vite+ — covering grade calculations, score curving, and GPA utilities.",{"type":12,"value":28131},[28132,28134,28136,28140],[15,28133,541],{"id":540},[20,28135,24481],{},[20,28137,24484,28138,24488],{},[39,28139,24487],{},[20,28141,24491,28142,24495,28144,24499,28146,24503],{},[546,28143,24494],{},[546,28145,24498],{},[39,28147,24502],{},"https:\u002F\u002Fres.cloudinary.com\u002Fddszyeplg\u002Fimage\u002Fupload\u002Fv1775009589\u002Fviteplus_et4prw.png",[28150,126,28151,4226,28152,28153,28154,8234],"vite+","library","education","teachers","grading",{},"\u002Fblog\u002Fviteplus-teacher-toolkit-package",{"title":24473,"description":28129},"blog\u002Fviteplus-teacher-toolkit-package","xWzhCaOm5SYTix9V__dTbVoVpqXgQRSVWUv-Tvrd76w",{"id":28161,"title":28162,"author":28163,"body":28165,"canonical":115,"categories":115,"date":28128,"description":28726,"excerpt":28727,"extension":118,"img":28148,"keywords":28742,"language":3510,"meta":28747,"navigation":129,"ogImage":115,"path":28748,"rating":275,"readTime":293,"seo":28749,"stem":28750,"tag":3515,"__hash__":28751},"blog\u002Fblog\u002Fviteplus-unified-toolchain.md","Vite+: The Unified Toolchain That Replaces Your Entire Frontend Setup",{"name":8,"img":28164,"website":535},"https:\u002F\u002Fres.cloudinary.com\u002Fddszyeplg\u002Fimage\u002Fupload\u002Fv1767533048\u002FPXL_20251010_202726442_2_hhudfr.jpg",{"type":12,"value":28166,"toc":28720},[28167,28169,28172,28185,28197,28201,28204,28254,28272,28274,28276,28279,28297,28300,28318,28321,28333,28337,28351,28354,28358,28361,28422,28428,28453,28460,28463,28486,28512,28529,28535,28538,28552,28559,28565,28592,28595,28601,28607,28617,28620,28624,28627,28639,28648,28652,28660,28670,28674,28706,28708,28711,28717],[15,28168,541],{"id":540},[20,28170,28171],{},"If you've been juggling Node version managers, package managers, linters, formatters, test runners, and build tools — you're not alone. The JavaScript tooling landscape has gotten out of hand.",[20,28173,28174,28176,28177,28182,28183,2230],{},[546,28175,24498],{}," aims to fix that. Created by ",[203,28178,28181],{"href":28179,"rel":28180},"https:\u002F\u002Fvoidzero.dev\u002F",[207],"VoidZero"," — the team behind Vite, Vitest, Oxc, and Rolldown — it unifies your entire development workflow into a single CLI tool called ",[39,28184,24571],{},[24,28186,28187],{"type":631},[20,28188,28189,28190,28192,28193,28196],{},"Vite+ ships in two parts: ",[39,28191,24571],{},", the global command-line tool, and ",[39,28194,28195],{},"vite-plus",", the local package installed in each project.",[15,28198,28200],{"id":28199},"what-is-vite","What Is Vite+?",[20,28202,28203],{},"Vite+ is the unified toolchain and entry point for web development. It manages your runtime, package manager, and frontend stack by combining:",[561,28205,28206,28214,28222,28230,28237,28245,28251],{},[564,28207,28208,28213],{},[203,28209,28212],{"href":28210,"rel":28211},"https:\u002F\u002Fvite.dev\u002F",[207],"Vite"," — dev server and builds",[564,28215,28216,28221],{},[203,28217,28220],{"href":28218,"rel":28219},"https:\u002F\u002Fvitest.dev\u002F",[207],"Vitest"," — testing",[564,28223,28224,28229],{},[203,28225,28228],{"href":28226,"rel":28227},"https:\u002F\u002Foxc.rs\u002F",[207],"Oxlint"," — linting",[564,28231,28232,28236],{},[203,28233,28235],{"href":28226,"rel":28234},[207],"Oxfmt"," — formatting",[564,28238,28239,28244],{},[203,28240,28243],{"href":28241,"rel":28242},"https:\u002F\u002Frolldown.rs\u002F",[207],"Rolldown"," — bundling",[564,28246,28247,28250],{},[203,28248,27537],{"href":27535,"rel":28249},[207]," — library packaging",[564,28252,28253],{},"Vite Task — monorepo task orchestration",[161,28255,28257],{"icon":1713,"title":28256},"Rust-Powered Performance",[20,28258,28259,28260,28263,28264,28267,28268,28271],{},"With low-level components written in Rust, Vite+ delivers up to ",[546,28261,28262],{},"40x faster builds"," than Webpack, ",[546,28265,28266],{},"~50–100x faster linting"," than ESLint, and ",[546,28269,28270],{},"~30x faster formatting"," than Prettier.",[15,28273,21211],{"id":21210},[31,28275,21218],{"id":21217},[20,28277,28278],{},"macOS \u002F Linux:",[47,28280,28282],{"className":758,"code":28281,"language":761,"meta":55,"style":55},"curl -fsSL https:\u002F\u002Fvite.plus | bash\n",[39,28283,28284],{"__ignoreMap":55},[250,28285,28286,28288,28290,28293,28295],{"class":252,"line":253},[250,28287,775],{"class":774},[250,28289,779],{"class":778},[250,28291,28292],{"class":782}," https:\u002F\u002Fvite.plus",[250,28294,787],{"class":786},[250,28296,790],{"class":774},[20,28298,28299],{},"Windows (PowerShell):",[47,28301,28303],{"className":758,"code":28302,"language":761,"meta":55,"style":55},"irm https:\u002F\u002Fvite.plus\u002Fps1 | iex\n",[39,28304,28305],{"__ignoreMap":55},[250,28306,28307,28310,28313,28315],{"class":252,"line":253},[250,28308,28309],{"class":774},"irm",[250,28311,28312],{"class":782}," https:\u002F\u002Fvite.plus\u002Fps1",[250,28314,787],{"class":786},[250,28316,28317],{"class":774}," iex\n",[20,28319,28320],{},"Open a new terminal session and verify:",[47,28322,28324],{"className":758,"code":28323,"language":761,"meta":55,"style":55},"vp help\n",[39,28325,28326],{"__ignoreMap":55},[250,28327,28328,28330],{"class":252,"line":253},[250,28329,24571],{"class":774},[250,28331,28332],{"class":782}," help\n",[31,28334,28336],{"id":28335},"create-a-new-project","Create a New Project",[47,28338,28340],{"className":758,"code":28339,"language":761,"meta":55,"style":55},"vp create my-app\n",[39,28341,28342],{"__ignoreMap":55},[250,28343,28344,28346,28348],{"class":252,"line":253},[250,28345,24571],{"class":774},[250,28347,24574],{"class":782},[250,28349,28350],{"class":782}," my-app\n",[20,28352,28353],{},"Vite+ supports every framework built on Vite — React, Vue, Svelte, Solid, and 20+ more.",[15,28355,28357],{"id":28356},"core-commands","Core Commands",[20,28359,28360],{},"Vite+ handles the entire local frontend development cycle. Here's the workflow:",[47,28362,28364],{"className":758,"code":28363,"language":761,"meta":55,"style":55},"vp create        # Scaffold a new project\nvp install       # Install dependencies (auto-detects pnpm\u002Fnpm\u002Fyarn)\nvp dev           # Start the dev server\nvp check         # Format, lint, and type-check in one pass\nvp test          # Run tests with Vitest\nvp build         # Build for production\n",[39,28365,28366,28375,28384,28394,28403,28412],{"__ignoreMap":55},[250,28367,28368,28370,28372],{"class":252,"line":253},[250,28369,24571],{"class":774},[250,28371,24574],{"class":782},[250,28373,28374],{"class":768},"        # Scaffold a new project\n",[250,28376,28377,28379,28381],{"class":252,"line":113},[250,28378,24571],{"class":774},[250,28380,808],{"class":782},[250,28382,28383],{"class":768},"       # Install dependencies (auto-detects pnpm\u002Fnpm\u002Fyarn)\n",[250,28385,28386,28388,28391],{"class":252,"line":110},[250,28387,24571],{"class":774},[250,28389,28390],{"class":782}," dev",[250,28392,28393],{"class":768},"           # Start the dev server\n",[250,28395,28396,28398,28400],{"class":252,"line":269},[250,28397,24571],{"class":774},[250,28399,28012],{"class":782},[250,28401,28402],{"class":768},"         # Format, lint, and type-check in one pass\n",[250,28404,28405,28407,28409],{"class":252,"line":275},[250,28406,24571],{"class":774},[250,28408,28022],{"class":782},[250,28410,28411],{"class":768},"          # Run tests with Vitest\n",[250,28413,28414,28416,28419],{"class":252,"line":281},[250,28415,24571],{"class":774},[250,28417,28418],{"class":782}," build",[250,28420,28421],{"class":768},"         # Build for production\n",[20,28423,28424,28425,28427],{},"You can also run ",[39,28426,24571],{}," on its own for an interactive command picker.",[10834,28429,28430,28432],{},[2459,28431,12902],{"id":12901},[20,28433,28434,28435,7128,28438,7128,28440,7128,28443,7128,28446,28449,28450,28452],{},"Instead of configuring ",[39,28436,28437],{},"nvm",[39,28439,4226],{},[39,28441,28442],{},"vitest",[39,28444,28445],{},"eslint",[39,28447,28448],{},"prettier",", and build scripts separately, ",[39,28451,24571],{}," handles all of it with a consistent interface across every project.",[15,28454,28456,28457],{"id":28455},"format-lint-and-type-check-with-vp-check","Format, Lint, and Type-Check with ",[39,28458,28459],{},"vp check",[20,28461,28462],{},"One command runs all three — powered by Oxc under the hood:",[561,28464,28465,28471,28477],{},[564,28466,28467,28470],{},[546,28468,28469],{},"Prettier-compatible"," formatting via Oxfmt",[564,28472,28473,28476],{},[546,28474,28475],{},"600+ ESLint-compatible"," rules via Oxlint",[564,28478,28479,28482,28483],{},[546,28480,28481],{},"Type-aware linting"," and fast type checks via ",[39,28484,28485],{},"tsgo",[47,28487,28489],{"className":758,"code":28488,"language":761,"meta":55,"style":55},"vp check         # Run all checks\nvp check --fix   # Auto-fix where possible\n",[39,28490,28491,28500],{"__ignoreMap":55},[250,28492,28493,28495,28497],{"class":252,"line":253},[250,28494,24571],{"class":774},[250,28496,28012],{"class":782},[250,28498,28499],{"class":768},"         # Run all checks\n",[250,28501,28502,28504,28506,28509],{"class":252,"line":113},[250,28503,24571],{"class":774},[250,28505,28012],{"class":782},[250,28507,28508],{"class":778}," --fix",[250,28510,28511],{"class":768},"   # Auto-fix where possible\n",[24,28513,28514],{"type":26},[20,28515,28516,28518,28519,7128,28522,28525,28526,28528],{},[39,28517,28459],{}," runs format, lint, and type checks together in a single pass. To run them individually, use ",[39,28520,28521],{},"vp fmt",[39,28523,28524],{},"vp lint",", or invoke ",[39,28527,28485],{}," directly.",[15,28530,28532,28533],{"id":28531},"testing-with-vp-test","Testing with ",[39,28534,27357],{},[20,28536,28537],{},"Vitest is built in — no separate install or config needed. It reuses the same resolve and transform config from your application.",[561,28539,28540,28543,28546,28549],{},[564,28541,28542],{},"Jest-compatible API",[564,28544,28545],{},"Test isolation by default",[564,28547,28548],{},"Browser Mode: run unit tests in actual browsers",[564,28550,28551],{},"Coverage, snapshots, type tests, visual regression",[15,28553,28555,28556],{"id":28554},"monorepo-task-caching-with-vp-run","Monorepo Task Caching with ",[39,28557,28558],{},"vp run",[20,28560,28561,28562,28564],{},"For monorepos, ",[39,28563,28558],{}," provides automated caching and dependency-aware execution:",[47,28566,28568],{"className":758,"code":28567,"language":761,"meta":55,"style":55},"vp run build     # Run build across workspaces with caching\nvp run test      # Run tests with input tracking\n",[39,28569,28570,28581],{"__ignoreMap":55},[250,28571,28572,28574,28576,28578],{"class":252,"line":253},[250,28573,24571],{"class":774},[250,28575,1707],{"class":782},[250,28577,28418],{"class":782},[250,28579,28580],{"class":768},"     # Run build across workspaces with caching\n",[250,28582,28583,28585,28587,28589],{"class":252,"line":113},[250,28584,24571],{"class":774},[250,28586,1707],{"class":782},[250,28588,28022],{"class":782},[250,28590,28591],{"class":768},"      # Run tests with input tracking\n",[20,28593,28594],{},"Tasks are cached automatically based on input files — no Turborepo config needed.",[15,28596,28598,28599],{"id":28597},"library-packaging-with-vp-pack","Library Packaging with ",[39,28600,24502],{},[20,28602,28603,28604,28606],{},"Publishing a library? ",[39,28605,24502],{}," handles DTS generation, bundling, and automatic package exports:",[47,28608,28609],{"className":758,"code":27483,"language":761,"meta":55,"style":55},[39,28610,28611],{"__ignoreMap":55},[250,28612,28613,28615],{"class":252,"line":253},[250,28614,24571],{"class":774},[250,28616,27492],{"class":782},[20,28618,28619],{},"Powered by Rolldown \u002F tsdown, it outputs ESM, CJS, and declaration files.",[15,28621,28623],{"id":28622},"migrating-an-existing-vite-project","Migrating an Existing Vite Project",[20,28625,28626],{},"Already have a Vite project? Migrate it with:",[47,28628,28630],{"className":758,"code":28629,"language":761,"meta":55,"style":55},"vp migrate\n",[39,28631,28632],{"__ignoreMap":55},[250,28633,28634,28636],{"class":252,"line":253},[250,28635,24571],{"class":774},[250,28637,28638],{"class":782}," migrate\n",[20,28640,28641,28642,28647],{},"Or paste the ",[203,28643,28646],{"href":28644,"rel":28645},"https:\u002F\u002Fviteplus.dev\u002Fguide\u002Fmigrate#migration-prompt",[207],"migration prompt"," into your coding agent.",[15,28649,28651],{"id":28650},"deployment","Deployment",[20,28653,28654,28655,28659],{},"Vite+ pairs with ",[203,28656,555],{"href":28657,"rel":28658},"https:\u002F\u002Fnitro.unjs.io\u002F",[207]," for platform-agnostic deployment. First-class support for Vercel, Netlify, Cloudflare Workers, and Render.",[161,28661,28663],{"icon":3246,"title":28662},"Platform Agnostic",[20,28664,28665,28666,28669],{},"Build once with ",[39,28667,28668],{},"vp build"," and deploy anywhere — Nitro handles the server runtime transformation.",[15,28671,28673],{"id":28672},"why-vite","Why Vite+?",[561,28675,28676,28682,28688,28694,28700],{},[564,28677,28678,28681],{},[546,28679,28680],{},"Stop wasting time on tooling maintenance"," — one CLI, one config, one workflow",[564,28683,28684,28687],{},[546,28685,28686],{},"Improve cross-team mobility"," — consistent DX across every project",[564,28689,28690,28693],{},[546,28691,28692],{},"Stay fast at scale"," — Rust-powered internals, enterprise-grade performance",[564,28695,28696,28699],{},[546,28697,28698],{},"Supply chain security"," — rigorous dependency vetting across the unified toolchain",[564,28701,28702,28705],{},[546,28703,28704],{},"Free and open source"," — MIT license, maintained by VoidZero and community contributors",[72,28707],{},[20,28709,28710],{},"Vite+ isn't reinventing the wheel — it's putting high-performance tires on it. By unifying your runtime, package manager, linter, formatter, test runner, and bundler into a single CLI, it removes the tooling tax that slows down every new project.",[20,28712,28713,28714,2230],{},"If Vite was the upgrade from Webpack, Vite+ is the upgrade from ",[3587,28715,28716],{},"tool fatigue",[500,28718,28719],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":55,"searchDepth":110,"depth":110,"links":28721},[28722,28723],{"id":21217,"depth":113,"text":21218},{"id":28335,"depth":113,"text":28336,"children":28724},[28725],{"id":12901,"depth":110,"text":12902},"Vite+ combines Vite, Vitest, Oxlint, Oxfmt, and Rolldown into a single CLI — managing your runtime, package manager, and toolchain in one place.",{"type":12,"value":28728},[28729,28731,28733],[15,28730,541],{"id":540},[20,28732,28171],{},[20,28734,28735,28176,28737,28182,28740,2230],{},[546,28736,24498],{},[203,28738,28181],{"href":28179,"rel":28739},[207],[39,28741,24571],{},[28150,126,28743,28744,3509,8234,28745,28442,28746],"frontend","toolchain","oxc","rolldown",{},"\u002Fblog\u002Fviteplus-unified-toolchain",{"title":28162,"description":28726},"blog\u002Fviteplus-unified-toolchain","Sg_ro7CXnz7y9Ugam_dig_kH9YpHYV1P7cVDEIlkyKE",{"id":28753,"title":28754,"author":28755,"body":28756,"canonical":115,"categories":115,"date":11328,"description":28766,"excerpt":115,"extension":118,"img":119,"keywords":115,"language":115,"meta":28767,"navigation":129,"ogImage":115,"path":28768,"rating":115,"readTime":115,"seo":28769,"stem":28770,"tag":28771,"__hash__":28772},"blog\u002Fblog\u002Fwork-in-progress.md","Work in Progress",{"name":8,"img":10},{"type":12,"value":28757,"toc":28764},[28758,28761],[15,28759,28754],{"id":28760},"work-in-progress",[20,28762,28763],{},"This post is currently under construction. Check back soon!",{"title":55,"searchDepth":110,"depth":110,"links":28765},[],"A placeholder for an upcoming post.",{},"\u002Fblog\u002Fwork-in-progress",{"title":28754,"description":28766},"blog\u002Fwork-in-progress","General","D2XqR3BH1UxjrAkn93_s4Kxi2i8goOhVluLzMwmSYLA",[28774,28847,29114,31489,31890,35493,35532,36438,37651,37797,37843,37879,38041,38581,39110,39341,39932,44436,45532,45594,46156,46308,47456,48112,49052,52261,52695],{"id":5,"title":6,"author":28775,"body":28776,"canonical":115,"categories":115,"date":116,"description":117,"excerpt":115,"extension":118,"img":119,"keywords":28843,"language":127,"meta":28844,"navigation":129,"ogImage":115,"path":130,"rating":131,"readTime":132,"seo":28845,"stem":134,"tag":125,"__hash__":135,"slug":28846},{"name":8,"website":9,"img":10},{"type":12,"value":28777,"toc":28839},[28778,28780,28782,28786,28788,28792,28794,28799,28801,28803,28805,28809,28811,28813,28818,28823,28825,28830,28832,28837],[15,28779,18],{"id":17},[20,28781,22],{},[24,28783,28784],{"type":26},[20,28785,29],{},[31,28787,34],{"id":33},[20,28789,37,28790,42],{},[39,28791,41],{},[20,28793,45],{},[47,28795,28797],{"className":28796,"code":51,"language":52},[50],[39,28798,51],{"__ignoreMap":55},[20,28800,58],{},[31,28802,62],{"id":61},[20,28804,65],{},[20,28806,28807],{},[39,28808,70],{},[72,28810],{},[20,28812,45],{},[47,28814,28816],{"className":28815,"code":79,"language":52},[50],[39,28817,79],{"__ignoreMap":55},[47,28819,28821],{"className":28820,"code":85,"language":52},[50],[39,28822,85],{"__ignoreMap":55},[20,28824,90],{},[47,28826,28828],{"className":28827,"code":94,"language":52},[50],[39,28829,94],{"__ignoreMap":55},[20,28831,99],{},[47,28833,28835],{"className":28834,"code":103,"language":52},[50],[39,28836,103],{"__ignoreMap":55},[20,28838,108],{},{"title":55,"searchDepth":110,"depth":110,"links":28840},[28841,28842],{"id":33,"depth":113,"text":34},{"id":61,"depth":113,"text":62},[121,122,123,124,125,126],{},{"title":6,"description":117},"add-env-variables-runtime",{"id":137,"title":138,"author":28848,"body":28849,"canonical":115,"categories":115,"date":511,"description":512,"excerpt":29102,"extension":118,"img":521,"keywords":29110,"language":524,"meta":29111,"navigation":129,"ogImage":115,"path":526,"rating":131,"readTime":393,"seo":29112,"stem":528,"tag":529,"__hash__":530,"slug":29113},{"name":8,"website":9,"img":10},{"type":12,"value":28850,"toc":29094},[28851,28853,28855,28857,28859,28861,28865,28867,28871,28873,28875,28880,28882,28887,28892,28894,28896,28898,28903,28905,28907,28912,28914,29074,29076,29078,29083,29085,29090,29092],[15,28852,145],{"id":144},[31,28854,149],{"id":148},[20,28856,152],{},[20,28858,155],{},[31,28860,159],{"id":158},[161,28862,28863],{"icon":163,"title":164},[20,28864,167],{},[20,28866,170],{},[172,28868,28869],{},[20,28870,176],{},[31,28872,180],{"id":179},[20,28874,183],{},[47,28876,28878],{"className":28877,"code":187,"language":52},[50],[39,28879,187],{"__ignoreMap":55},[20,28881,192],{},[47,28883,28885],{"className":28884,"code":196,"language":52},[50],[39,28886,196],{"__ignoreMap":55},[20,28888,201,28889],{},[203,28890,205],{"href":205,"rel":28891},[207],[31,28893,211],{"id":210},[20,28895,214],{},[31,28897,218],{"id":217},[47,28899,28901],{"className":28900,"code":222,"language":52},[50],[39,28902,222],{"__ignoreMap":55},[31,28904,228],{"id":227},[20,28906,231],{},[47,28908,28910],{"className":28909,"code":235,"language":52},[50],[39,28911,235],{"__ignoreMap":55},[20,28913,240],{},[47,28915,28916],{"className":243,"code":244,"language":245,"meta":246,"style":55},[39,28917,28918,28922,28926,28930,28934,28938,28942,28946,28950,28954,28958,28962,28966,28970,28974,28978,28982,28986,28990,28994,28998,29002,29006,29010,29014,29018,29022,29026,29030,29034,29038,29042,29046,29050,29054,29058,29062,29066,29070],{"__ignoreMap":55},[250,28919,28920],{"class":252,"line":253},[250,28921,256],{},[250,28923,28924],{"class":252,"line":113},[250,28925,261],{},[250,28927,28928],{"class":252,"line":110},[250,28929,266],{},[250,28931,28932],{"class":252,"line":269},[250,28933,272],{},[250,28935,28936],{"class":252,"line":275},[250,28937,278],{},[250,28939,28940],{"class":252,"line":281},[250,28941,284],{},[250,28943,28944],{"class":252,"line":287},[250,28945,290],{},[250,28947,28948],{"class":252,"line":293},[250,28949,296],{},[250,28951,28952],{"class":252,"line":299},[250,28953,302],{},[250,28955,28956],{"class":252,"line":132},[250,28957,307],{},[250,28959,28960],{"class":252,"line":310},[250,28961,313],{},[250,28963,28964],{"class":252,"line":316},[250,28965,319],{},[250,28967,28968],{"class":252,"line":322},[250,28969,325],{},[250,28971,28972],{"class":252,"line":328},[250,28973,331],{},[250,28975,28976],{"class":252,"line":334},[250,28977,337],{},[250,28979,28980],{"class":252,"line":340},[250,28981,343],{},[250,28983,28984],{"class":252,"line":346},[250,28985,349],{},[250,28987,28988],{"class":252,"line":352},[250,28989,355],{},[250,28991,28992],{"class":252,"line":358},[250,28993,361],{},[250,28995,28996],{"class":252,"line":364},[250,28997,367],{},[250,28999,29000],{"class":252,"line":370},[250,29001,373],{},[250,29003,29004],{"class":252,"line":376},[250,29005,379],{},[250,29007,29008],{"class":252,"line":382},[250,29009,385],{},[250,29011,29012],{"class":252,"line":388},[250,29013,361],{},[250,29015,29016],{"class":252,"line":393},[250,29017,396],{},[250,29019,29020],{"class":252,"line":399},[250,29021,402],{},[250,29023,29024],{"class":252,"line":405},[250,29025,379],{},[250,29027,29028],{"class":252,"line":410},[250,29029,385],{},[250,29031,29032],{"class":252,"line":415},[250,29033,361],{},[250,29035,29036],{"class":252,"line":420},[250,29037,423],{},[250,29039,29040],{"class":252,"line":426},[250,29041,402],{},[250,29043,29044],{"class":252,"line":431},[250,29045,379],{},[250,29047,29048],{"class":252,"line":436},[250,29049,439],{},[250,29051,29052],{"class":252,"line":442},[250,29053,385],{},[250,29055,29056],{"class":252,"line":447},[250,29057,450],{},[250,29059,29060],{"class":252,"line":453},[250,29061,456],{},[250,29063,29064],{"class":252,"line":459},[250,29065,462],{},[250,29067,29068],{"class":252,"line":465},[250,29069,468],{},[250,29071,29072],{"class":252,"line":471},[250,29073,474],{},[20,29075,477],{},[20,29077,480],{},[47,29079,29081],{"className":29080,"code":484,"language":52},[50],[39,29082,484],{"__ignoreMap":55},[20,29084,489],{},[47,29086,29088],{"className":29087,"code":493,"language":52},[50],[39,29089,493],{"__ignoreMap":55},[20,29091,498],{},[500,29093,502],{},{"title":55,"searchDepth":110,"depth":110,"links":29095},[29096,29097,29098,29099,29100,29101],{"id":148,"depth":113,"text":149},{"id":158,"depth":113,"text":159},{"id":179,"depth":113,"text":180},{"id":210,"depth":113,"text":211},{"id":217,"depth":113,"text":218},{"id":227,"depth":113,"text":228},{"type":12,"value":29103},[29104,29106,29108],[15,29105,145],{"id":144},[31,29107,149],{"id":148},[20,29109,152],{},[121,122,123,124,523,126],{},{"title":138,"description":512},"building-vue3-progressive-app",{"id":532,"title":533,"author":29115,"body":29116,"canonical":115,"categories":115,"date":3470,"description":3471,"excerpt":31455,"extension":118,"img":3502,"keywords":31485,"language":3510,"meta":31486,"navigation":129,"ogImage":115,"path":3512,"rating":275,"readTime":132,"seo":31487,"stem":3514,"tag":3515,"__hash__":3516,"slug":31488},{"name":8,"img":10,"website":535},{"type":12,"value":29117,"toc":31423},[29118,29120,29124,29128,29130,29142,29146,29148,29150,29152,29174,29178,29180,29182,29184,29248,29250,29254,29256,29258,29260,29262,29298,29300,29314,29316,29318,29320,29348,29352,29354,29364,29366,29436,29438,29440,29442,29446,29500,29502,29504,29506,29508,29512,29568,29572,29718,29720,29990,29992,29994,29996,30008,30012,30014,30030,30032,30034,30036,30040,30580,30582,30614,30616,30618,30620,30622,30772,30774,30776,30850,30852,30854,31020,31022,31024,31026,31120,31122,31139,31141,31143,31145,31147,31161,31163,31211,31213,31261,31263,31265,31285,31289,31291,31293,31295,31307,31309,31361,31363,31365,31369,31391,31393,31395,31407,31409,31417,31419,31421],[15,29119,541],{"id":540},[20,29121,544,29122,549],{},[546,29123,548],{},[20,29125,552,29126,556],{},[546,29127,555],{},[20,29129,559],{},[561,29131,29132,29134,29136,29138,29140],{},[564,29133,566],{},[564,29135,569],{},[564,29137,572],{},[564,29139,575],{},[564,29141,578],{},[20,29143,581,29144,585],{},[546,29145,584],{},[15,29147,589],{"id":588},[20,29149,592],{},[31,29151,596],{"id":595},[561,29153,29154,29158,29162,29166,29170],{},[564,29155,29156,604],{},[546,29157,603],{},[564,29159,29160,610],{},[546,29161,609],{},[564,29163,29164,616],{},[546,29165,615],{},[564,29167,29168,622],{},[546,29169,621],{},[564,29171,29172,628],{},[546,29173,627],{},[24,29175,29176],{"type":631},[20,29177,634],{},[72,29179],{},[31,29181,640],{"id":639},[20,29183,643],{},[645,29185,29186,29198],{},[648,29187,29188],{},[651,29189,29190,29192,29194,29196],{},[654,29191,656],{},[654,29193,659],{},[654,29195,548],{},[654,29197,664],{},[666,29199,29200,29212,29224,29236],{},[651,29201,29202,29204,29206,29208],{},[671,29203,673],{},[671,29205,676],{},[671,29207,679],{},[671,29209,29210],{},[546,29211,684],{},[651,29213,29214,29216,29218,29220],{},[671,29215,689],{},[671,29217,692],{},[671,29219,695],{},[671,29221,29222],{},[546,29223,700],{},[651,29225,29226,29228,29230,29232],{},[671,29227,705],{},[671,29229,708],{},[671,29231,711],{},[671,29233,29234],{},[546,29235,716],{},[651,29237,29238,29240,29242,29244],{},[671,29239,721],{},[671,29241,724],{},[671,29243,727],{},[671,29245,29246],{},[546,29247,732],{},[20,29249,735],{},[161,29251,29252],{"icon":738,"title":739},[20,29253,742],{},[72,29255],{},[15,29257,748],{"id":747},[31,29259,752],{"id":751},[20,29261,755],{},[47,29263,29264],{"className":758,"code":759,"filename":760,"language":761,"meta":55,"style":55},[39,29265,29266,29270,29282,29286,29290],{"__ignoreMap":55},[250,29267,29268],{"class":252,"line":253},[250,29269,769],{"class":768},[250,29271,29272,29274,29276,29278,29280],{"class":252,"line":113},[250,29273,775],{"class":774},[250,29275,779],{"class":778},[250,29277,783],{"class":782},[250,29279,787],{"class":786},[250,29281,790],{"class":774},[250,29283,29284],{"class":252,"line":110},[250,29285,795],{"emptyLinePlaceholder":129},[250,29287,29288],{"class":252,"line":269},[250,29289,800],{"class":768},[250,29291,29292,29294,29296],{"class":252,"line":275},[250,29293,805],{"class":774},[250,29295,808],{"class":782},[250,29297,811],{"class":782},[20,29299,814],{},[47,29301,29302],{"className":758,"code":817,"filename":760,"language":761,"meta":55,"style":55},[39,29303,29304,29310],{"__ignoreMap":55},[250,29305,29306,29308],{"class":252,"line":253},[250,29307,824],{"class":774},[250,29309,827],{"class":778},[250,29311,29312],{"class":252,"line":113},[250,29313,832],{"class":768},[72,29315],{},[31,29317,838],{"id":837},[20,29319,841],{},[47,29321,29322],{"className":758,"code":844,"filename":760,"language":761,"meta":55,"style":55},[39,29323,29324,29328,29338,29342],{"__ignoreMap":55},[250,29325,29326],{"class":252,"line":253},[250,29327,851],{"class":768},[250,29329,29330,29332,29334,29336],{"class":252,"line":113},[250,29331,856],{"class":774},[250,29333,859],{"class":782},[250,29335,862],{"class":782},[250,29337,865],{"class":782},[250,29339,29340],{"class":252,"line":110},[250,29341,795],{"emptyLinePlaceholder":129},[250,29343,29344,29346],{"class":252,"line":269},[250,29345,874],{"class":778},[250,29347,865],{"class":782},[24,29349,29350],{"type":26},[20,29351,881],{},[20,29353,884],{},[47,29355,29356],{"className":758,"code":887,"filename":760,"language":761,"meta":55,"style":55},[39,29357,29358],{"__ignoreMap":55},[250,29359,29360,29362],{"class":252,"line":253},[250,29361,824],{"class":774},[250,29363,896],{"class":782},[20,29365,899],{},[47,29367,29368],{"className":902,"code":903,"filename":904,"language":905,"meta":55,"style":55},[39,29369,29370,29374,29384,29390,29400,29410,29420,29428,29432],{"__ignoreMap":55},[250,29371,29372],{"class":252,"line":253},[250,29373,913],{"class":912},[250,29375,29376,29378,29380,29382],{"class":252,"line":113},[250,29377,918],{"class":778},[250,29379,921],{"class":912},[250,29381,924],{"class":782},[250,29383,927],{"class":912},[250,29385,29386,29388],{"class":252,"line":110},[250,29387,932],{"class":778},[250,29389,935],{"class":912},[250,29391,29392,29394,29396,29398],{"class":252,"line":269},[250,29393,940],{"class":778},[250,29395,921],{"class":912},[250,29397,945],{"class":782},[250,29399,927],{"class":912},[250,29401,29402,29404,29406,29408],{"class":252,"line":275},[250,29403,952],{"class":778},[250,29405,921],{"class":912},[250,29407,957],{"class":782},[250,29409,927],{"class":912},[250,29411,29412,29414,29416,29418],{"class":252,"line":281},[250,29413,964],{"class":778},[250,29415,921],{"class":912},[250,29417,969],{"class":782},[250,29419,927],{"class":912},[250,29421,29422,29424,29426],{"class":252,"line":287},[250,29423,976],{"class":778},[250,29425,921],{"class":912},[250,29427,981],{"class":782},[250,29429,29430],{"class":252,"line":293},[250,29431,986],{"class":912},[250,29433,29434],{"class":252,"line":299},[250,29435,991],{"class":912},[72,29437],{},[31,29439,997],{"id":996},[20,29441,1000],{},[20,29443,1003,29444,1007],{},[39,29445,1006],{},[47,29447,29448],{"className":1010,"code":1011,"filename":1006,"language":1012,"meta":55,"style":55},[39,29449,29450,29460,29464,29472,29476,29480,29484,29492,29496],{"__ignoreMap":55},[250,29451,29452,29454,29456,29458],{"class":252,"line":253},[250,29453,1019],{"class":786},[250,29455,1022],{"class":786},[250,29457,1025],{"class":774},[250,29459,1028],{"class":912},[250,29461,29462],{"class":252,"line":113},[250,29463,1033],{"class":912},[250,29465,29466,29468,29470],{"class":252,"line":110},[250,29467,1038],{"class":912},[250,29469,1041],{"class":782},[250,29471,927],{"class":912},[250,29473,29474],{"class":252,"line":269},[250,29475,1048],{"class":912},[250,29477,29478],{"class":252,"line":275},[250,29479,1053],{"class":912},[250,29481,29482],{"class":252,"line":281},[250,29483,1058],{"class":912},[250,29485,29486,29488,29490],{"class":252,"line":287},[250,29487,1063],{"class":912},[250,29489,1066],{"class":778},[250,29491,927],{"class":912},[250,29493,29494],{"class":252,"line":293},[250,29495,1048],{"class":912},[250,29497,29498],{"class":252,"line":299},[250,29499,1077],{"class":912},[20,29501,1080],{},[72,29503],{},[31,29505,1086],{"id":1085},[20,29507,1089],{},[20,29509,1092,29510,1007],{},[39,29511,1095],{},[47,29513,29514],{"className":1010,"code":1098,"filename":1095,"language":1012,"meta":55,"style":55},[39,29515,29516,29530,29536,29544,29552,29560,29564],{"__ignoreMap":55},[250,29517,29518,29520,29522,29524,29526,29528],{"class":252,"line":253},[250,29519,1019],{"class":786},[250,29521,1022],{"class":786},[250,29523,1109],{"class":774},[250,29525,1112],{"class":912},[250,29527,1115],{"class":786},[250,29529,1118],{"class":912},[250,29531,29532,29534],{"class":252,"line":113},[250,29533,1123],{"class":786},[250,29535,1118],{"class":912},[250,29537,29538,29540,29542],{"class":252,"line":110},[250,29539,1130],{"class":912},[250,29541,1133],{"class":782},[250,29543,927],{"class":912},[250,29545,29546,29548,29550],{"class":252,"line":269},[250,29547,1140],{"class":912},[250,29549,1143],{"class":782},[250,29551,927],{"class":912},[250,29553,29554,29556,29558],{"class":252,"line":275},[250,29555,1150],{"class":912},[250,29557,1153],{"class":774},[250,29559,1156],{"class":912},[250,29561,29562],{"class":252,"line":281},[250,29563,1161],{"class":912},[250,29565,29566],{"class":252,"line":287},[250,29567,1077],{"class":912},[20,29569,1092,29570,1171],{},[39,29571,1170],{},[47,29573,29574],{"className":1010,"code":1174,"filename":1170,"language":1012,"meta":55,"style":55},[39,29575,29576,29586,29606,29626,29646,29666,29686,29690,29694,29708,29714],{"__ignoreMap":55},[250,29577,29578,29580,29582,29584],{"class":252,"line":253},[250,29579,1181],{"class":786},[250,29581,1184],{"class":778},[250,29583,1187],{"class":786},[250,29585,1190],{"class":912},[250,29587,29588,29590,29592,29594,29596,29598,29600,29602,29604],{"class":252,"line":113},[250,29589,1195],{"class":912},[250,29591,1198],{"class":778},[250,29593,1201],{"class":912},[250,29595,1204],{"class":782},[250,29597,1207],{"class":912},[250,29599,1210],{"class":778},[250,29601,1213],{"class":912},[250,29603,1216],{"class":782},[250,29605,1219],{"class":912},[250,29607,29608,29610,29612,29614,29616,29618,29620,29622,29624],{"class":252,"line":110},[250,29609,1195],{"class":912},[250,29611,1226],{"class":778},[250,29613,1201],{"class":912},[250,29615,1231],{"class":782},[250,29617,1207],{"class":912},[250,29619,1236],{"class":778},[250,29621,1213],{"class":912},[250,29623,1216],{"class":782},[250,29625,1219],{"class":912},[250,29627,29628,29630,29632,29634,29636,29638,29640,29642,29644],{"class":252,"line":269},[250,29629,1195],{"class":912},[250,29631,1249],{"class":778},[250,29633,1201],{"class":912},[250,29635,1254],{"class":782},[250,29637,1207],{"class":912},[250,29639,1259],{"class":778},[250,29641,1213],{"class":912},[250,29643,1264],{"class":782},[250,29645,1219],{"class":912},[250,29647,29648,29650,29652,29654,29656,29658,29660,29662,29664],{"class":252,"line":275},[250,29649,1195],{"class":912},[250,29651,1273],{"class":778},[250,29653,1201],{"class":912},[250,29655,1278],{"class":782},[250,29657,1207],{"class":912},[250,29659,1283],{"class":778},[250,29661,1213],{"class":912},[250,29663,1288],{"class":782},[250,29665,1219],{"class":912},[250,29667,29668,29670,29672,29674,29676,29678,29680,29682,29684],{"class":252,"line":281},[250,29669,1195],{"class":912},[250,29671,1297],{"class":778},[250,29673,1201],{"class":912},[250,29675,1302],{"class":782},[250,29677,1207],{"class":912},[250,29679,1236],{"class":778},[250,29681,1213],{"class":912},[250,29683,1264],{"class":782},[250,29685,1219],{"class":912},[250,29687,29688],{"class":252,"line":287},[250,29689,1317],{"class":912},[250,29691,29692],{"class":252,"line":293},[250,29693,795],{"emptyLinePlaceholder":129},[250,29695,29696,29698,29700,29702,29704,29706],{"class":252,"line":299},[250,29697,1019],{"class":786},[250,29699,1022],{"class":786},[250,29701,1109],{"class":774},[250,29703,1112],{"class":912},[250,29705,1115],{"class":786},[250,29707,1118],{"class":912},[250,29709,29710,29712],{"class":252,"line":132},[250,29711,1123],{"class":786},[250,29713,1342],{"class":912},[250,29715,29716],{"class":252,"line":310},[250,29717,1077],{"class":912},[20,29719,1349],{},[47,29721,29722],{"className":1010,"code":1352,"filename":1353,"language":1012,"meta":55,"style":55},[39,29723,29724,29732,29742,29752,29756,29760,29776,29780,29802,29822,29826,29848,29856,29864,29872,29876,29880,29884,29888,29912,29916,29926,29934,29938,29946,29960,29964,29968,29976,29980,29986],{"__ignoreMap":55},[250,29725,29726,29728,29730],{"class":252,"line":253},[250,29727,1360],{"class":786},[250,29729,1363],{"class":774},[250,29731,1118],{"class":912},[250,29733,29734,29736,29738,29740],{"class":252,"line":113},[250,29735,1371],{"class":1370},[250,29737,1007],{"class":786},[250,29739,1376],{"class":778},[250,29741,1379],{"class":912},[250,29743,29744,29746,29748,29750],{"class":252,"line":110},[250,29745,1384],{"class":1370},[250,29747,1007],{"class":786},[250,29749,1376],{"class":778},[250,29751,1379],{"class":912},[250,29753,29754],{"class":252,"line":269},[250,29755,991],{"class":912},[250,29757,29758],{"class":252,"line":275},[250,29759,795],{"emptyLinePlaceholder":129},[250,29761,29762,29764,29766,29768,29770,29772,29774],{"class":252,"line":281},[250,29763,1181],{"class":786},[250,29765,1405],{"class":778},[250,29767,1007],{"class":786},[250,29769,1410],{"class":778},[250,29771,1413],{"class":912},[250,29773,1416],{"class":786},[250,29775,1419],{"class":912},[250,29777,29778],{"class":252,"line":287},[250,29779,795],{"emptyLinePlaceholder":129},[250,29781,29782,29784,29786,29788,29790,29792,29794,29796,29798,29800],{"class":252,"line":293},[250,29783,1019],{"class":786},[250,29785,1022],{"class":786},[250,29787,1109],{"class":774},[250,29789,1434],{"class":912},[250,29791,1437],{"class":786},[250,29793,1440],{"class":912},[250,29795,1443],{"class":1370},[250,29797,1446],{"class":912},[250,29799,1115],{"class":786},[250,29801,1118],{"class":912},[250,29803,29804,29806,29808,29810,29812,29814,29816,29818,29820],{"class":252,"line":299},[250,29805,1455],{"class":786},[250,29807,1458],{"class":778},[250,29809,1187],{"class":786},[250,29811,1463],{"class":786},[250,29813,1466],{"class":774},[250,29815,1469],{"class":912},[250,29817,1472],{"class":786},[250,29819,1363],{"class":774},[250,29821,1477],{"class":912},[250,29823,29824],{"class":252,"line":132},[250,29825,1053],{"class":912},[250,29827,29828,29830,29832,29834,29836,29838,29840,29842,29844,29846],{"class":252,"line":310},[250,29829,1486],{"class":786},[250,29831,1440],{"class":912},[250,29833,1491],{"class":786},[250,29835,1494],{"class":912},[250,29837,1497],{"class":786},[250,29839,1500],{"class":912},[250,29841,1503],{"class":778},[250,29843,1506],{"class":786},[250,29845,1509],{"class":778},[250,29847,1512],{"class":912},[250,29849,29850,29852,29854],{"class":252,"line":316},[250,29851,1517],{"class":786},[250,29853,1520],{"class":774},[250,29855,1028],{"class":912},[250,29857,29858,29860,29862],{"class":252,"line":322},[250,29859,1527],{"class":912},[250,29861,1530],{"class":778},[250,29863,927],{"class":912},[250,29865,29866,29868,29870],{"class":252,"line":328},[250,29867,1537],{"class":912},[250,29869,1540],{"class":782},[250,29871,927],{"class":912},[250,29873,29874],{"class":252,"line":334},[250,29875,1547],{"class":912},[250,29877,29878],{"class":252,"line":340},[250,29879,986],{"class":912},[250,29881,29882],{"class":252,"line":346},[250,29883,1053],{"class":912},[250,29885,29886],{"class":252,"line":352},[250,29887,1560],{"class":768},[250,29889,29890,29892,29894,29896,29898,29900,29902,29904,29906,29908,29910],{"class":252,"line":358},[250,29891,1565],{"class":786},[250,29893,1568],{"class":786},[250,29895,1571],{"class":778},[250,29897,1574],{"class":912},[250,29899,1577],{"class":1370},[250,29901,1446],{"class":912},[250,29903,1115],{"class":786},[250,29905,1584],{"class":774},[250,29907,1587],{"class":912},[250,29909,1590],{"class":778},[250,29911,1593],{"class":912},[250,29913,29914],{"class":252,"line":364},[250,29915,1053],{"class":912},[250,29917,29918,29920,29922,29924],{"class":252,"line":370},[250,29919,1455],{"class":786},[250,29921,1604],{"class":778},[250,29923,1187],{"class":786},[250,29925,1118],{"class":912},[250,29927,29928,29930,29932],{"class":252,"line":376},[250,29929,1613],{"class":912},[250,29931,1616],{"class":774},[250,29933,1156],{"class":912},[250,29935,29936],{"class":252,"line":382},[250,29937,1623],{"class":912},[250,29939,29940,29942,29944],{"class":252,"line":388},[250,29941,1628],{"class":912},[250,29943,1631],{"class":782},[250,29945,927],{"class":912},[250,29947,29948,29950,29952,29954,29956,29958],{"class":252,"line":393},[250,29949,1638],{"class":912},[250,29951,1641],{"class":786},[250,29953,1644],{"class":774},[250,29955,1647],{"class":912},[250,29957,1650],{"class":774},[250,29959,1156],{"class":912},[250,29961,29962],{"class":252,"line":399},[250,29963,1161],{"class":912},[250,29965,29966],{"class":252,"line":405},[250,29967,1053],{"class":912},[250,29969,29970,29972,29974],{"class":252,"line":410},[250,29971,1665],{"class":912},[250,29973,1668],{"class":774},[250,29975,1671],{"class":912},[250,29977,29978],{"class":252,"line":415},[250,29979,1053],{"class":912},[250,29981,29982,29984],{"class":252,"line":420},[250,29983,1123],{"class":786},[250,29985,1682],{"class":912},[250,29987,29988],{"class":252,"line":426},[250,29989,1077],{"class":912},[72,29991],{},[31,29993,1692],{"id":1691},[20,29995,1695],{},[47,29997,29998],{"className":758,"code":1698,"filename":760,"language":761,"meta":55,"style":55},[39,29999,30000],{"__ignoreMap":55},[250,30001,30002,30004,30006],{"class":252,"line":253},[250,30003,824],{"class":774},[250,30005,1707],{"class":782},[250,30007,1710],{"class":782},[161,30009,30010],{"icon":1713,"title":1714},[20,30011,1717],{},[20,30013,1720],{},[47,30015,30016],{"className":758,"code":1723,"filename":760,"language":761,"meta":55,"style":55},[39,30017,30018,30024],{"__ignoreMap":55},[250,30019,30020,30022],{"class":252,"line":253},[250,30021,775],{"class":774},[250,30023,1732],{"class":782},[250,30025,30026,30028],{"class":252,"line":113},[250,30027,775],{"class":774},[250,30029,1739],{"class":782},[72,30031],{},[31,30033,1745],{"id":1744},[20,30035,1748],{},[20,30037,1092,30038,1007],{},[39,30039,1753],{},[47,30041,30042],{"className":1010,"code":1756,"filename":1753,"language":1012,"meta":55,"style":55},[39,30043,30044,30056,30060,30072,30084,30096,30108,30112,30122,30146,30150,30164,30176,30180,30190,30194,30220,30228,30244,30260,30272,30282,30288,30292,30296,30302,30322,30330,30334,30346,30352,30360,30370,30374,30382,30392,30396,30400,30404,30410,30414,30418,30422,30426,30438,30442,30460,30486,30490,30502,30518,30534,30566,30570,30574],{"__ignoreMap":55},[250,30045,30046,30048,30050,30052,30054],{"class":252,"line":253},[250,30047,1763],{"class":786},[250,30049,1766],{"class":912},[250,30051,1769],{"class":786},[250,30053,1772],{"class":782},[250,30055,1379],{"class":912},[250,30057,30058],{"class":252,"line":113},[250,30059,795],{"emptyLinePlaceholder":129},[250,30061,30062,30064,30066,30068,30070],{"class":252,"line":110},[250,30063,1181],{"class":786},[250,30065,1785],{"class":778},[250,30067,1187],{"class":786},[250,30069,1790],{"class":782},[250,30071,1379],{"class":912},[250,30073,30074,30076,30078,30080,30082],{"class":252,"line":269},[250,30075,1181],{"class":786},[250,30077,1799],{"class":778},[250,30079,1187],{"class":786},[250,30081,1804],{"class":778},[250,30083,1379],{"class":912},[250,30085,30086,30088,30090,30092,30094],{"class":252,"line":275},[250,30087,1181],{"class":786},[250,30089,1813],{"class":778},[250,30091,1187],{"class":786},[250,30093,1818],{"class":778},[250,30095,1379],{"class":912},[250,30097,30098,30100,30102,30104,30106],{"class":252,"line":281},[250,30099,1181],{"class":786},[250,30101,1827],{"class":778},[250,30103,1187],{"class":786},[250,30105,1832],{"class":778},[250,30107,1379],{"class":912},[250,30109,30110],{"class":252,"line":287},[250,30111,795],{"emptyLinePlaceholder":129},[250,30113,30114,30116,30118,30120],{"class":252,"line":293},[250,30115,1437],{"class":786},[250,30117,1845],{"class":786},[250,30119,1848],{"class":774},[250,30121,1851],{"class":912},[250,30123,30124,30126,30128,30130,30132,30134,30136,30138,30140,30142,30144],{"class":252,"line":299},[250,30125,1856],{"class":912},[250,30127,1859],{"class":774},[250,30129,1434],{"class":912},[250,30131,1864],{"class":782},[250,30133,1867],{"class":778},[250,30135,1870],{"class":782},[250,30137,1873],{"class":778},[250,30139,1876],{"class":782},[250,30141,1879],{"class":778},[250,30143,1882],{"class":782},[250,30145,1885],{"class":912},[250,30147,30148],{"class":252,"line":132},[250,30149,1053],{"class":912},[250,30151,30152,30154,30156,30158,30160,30162],{"class":252,"line":310},[250,30153,1455],{"class":786},[250,30155,1896],{"class":778},[250,30157,1187],{"class":786},[250,30159,1901],{"class":912},[250,30161,1153],{"class":774},[250,30163,1906],{"class":912},[250,30165,30166,30168,30170,30172,30174],{"class":252,"line":316},[250,30167,1911],{"class":786},[250,30169,1914],{"class":912},[250,30171,1416],{"class":786},[250,30173,1509],{"class":778},[250,30175,1379],{"class":912},[250,30177,30178],{"class":252,"line":322},[250,30179,1053],{"class":912},[250,30181,30182,30184,30186,30188],{"class":252,"line":328},[250,30183,1455],{"class":786},[250,30185,1931],{"class":778},[250,30187,1187],{"class":786},[250,30189,1419],{"class":912},[250,30191,30192],{"class":252,"line":334},[250,30193,1053],{"class":912},[250,30195,30196,30198,30200,30202,30204,30206,30208,30210,30212,30214,30216,30218],{"class":252,"line":340},[250,30197,1944],{"class":786},[250,30199,1440],{"class":912},[250,30201,1949],{"class":786},[250,30203,1952],{"class":912},[250,30205,1416],{"class":786},[250,30207,1509],{"class":778},[250,30209,1959],{"class":912},[250,30211,1962],{"class":786},[250,30213,1827],{"class":778},[250,30215,1967],{"class":912},[250,30217,1970],{"class":786},[250,30219,1512],{"class":912},[250,30221,30222,30224,30226],{"class":252,"line":346},[250,30223,1977],{"class":912},[250,30225,1668],{"class":774},[250,30227,1982],{"class":912},[250,30229,30230,30232,30234,30236,30238,30240,30242],{"class":252,"line":352},[250,30231,1987],{"class":786},[250,30233,1571],{"class":778},[250,30235,1574],{"class":912},[250,30237,1577],{"class":1370},[250,30239,1446],{"class":912},[250,30241,1115],{"class":786},[250,30243,1118],{"class":912},[250,30245,30246,30248,30250,30252,30254,30256,30258],{"class":252,"line":358},[250,30247,2004],{"class":786},[250,30249,2007],{"class":774},[250,30251,1187],{"class":786},[250,30253,2012],{"class":786},[250,30255,2015],{"class":912},[250,30257,1115],{"class":786},[250,30259,1118],{"class":912},[250,30261,30262,30264,30266,30268,30270],{"class":252,"line":364},[250,30263,2024],{"class":786},[250,30265,2027],{"class":912},[250,30267,2030],{"class":786},[250,30269,1813],{"class":778},[250,30271,1512],{"class":912},[250,30273,30274,30276,30278,30280],{"class":252,"line":370},[250,30275,2039],{"class":774},[250,30277,1434],{"class":912},[250,30279,1066],{"class":778},[250,30281,1885],{"class":912},[250,30283,30284,30286],{"class":252,"line":376},[250,30285,2050],{"class":786},[250,30287,1379],{"class":912},[250,30289,30290],{"class":252,"line":382},[250,30291,2057],{"class":912},[250,30293,30294],{"class":252,"line":388},[250,30295,2062],{"class":912},[250,30297,30298,30300],{"class":252,"line":393},[250,30299,2067],{"class":786},[250,30301,1118],{"class":912},[250,30303,30304,30306,30308,30310,30312,30314,30316,30318,30320],{"class":252,"line":399},[250,30305,2074],{"class":786},[250,30307,2077],{"class":774},[250,30309,1434],{"class":912},[250,30311,2082],{"class":782},[250,30313,2085],{"class":778},[250,30315,2088],{"class":782},[250,30317,2091],{"class":778},[250,30319,2094],{"class":782},[250,30321,1885],{"class":912},[250,30323,30324,30326,30328],{"class":252,"line":405},[250,30325,2101],{"class":912},[250,30327,1970],{"class":786},[250,30329,1379],{"class":912},[250,30331,30332],{"class":252,"line":410},[250,30333,2110],{"class":912},[250,30335,30336,30338,30340,30342,30344],{"class":252,"line":415},[250,30337,2115],{"class":786},[250,30339,2027],{"class":912},[250,30341,1962],{"class":786},[250,30343,1813],{"class":778},[250,30345,1512],{"class":912},[250,30347,30348,30350],{"class":252,"line":420},[250,30349,2128],{"class":774},[250,30351,1906],{"class":912},[250,30353,30354,30356,30358],{"class":252,"line":426},[250,30355,2135],{"class":912},[250,30357,2138],{"class":786},[250,30359,1118],{"class":912},[250,30361,30362,30364,30366,30368],{"class":252,"line":431},[250,30363,2145],{"class":774},[250,30365,1434],{"class":912},[250,30367,1066],{"class":778},[250,30369,1885],{"class":912},[250,30371,30372],{"class":252,"line":436},[250,30373,2156],{"class":912},[250,30375,30376,30378,30380],{"class":252,"line":442},[250,30377,2161],{"class":912},[250,30379,2164],{"class":786},[250,30381,2167],{"class":912},[250,30383,30384,30386,30388,30390],{"class":252,"line":447},[250,30385,2039],{"class":774},[250,30387,1434],{"class":912},[250,30389,1066],{"class":778},[250,30391,1885],{"class":912},[250,30393,30394],{"class":252,"line":453},[250,30395,2057],{"class":912},[250,30397,30398],{"class":252,"line":459},[250,30399,2186],{"class":912},[250,30401,30402],{"class":252,"line":465},[250,30403,2191],{"class":912},[250,30405,30406,30408],{"class":252,"line":471},[250,30407,2196],{"class":774},[250,30409,1906],{"class":912},[250,30411,30412],{"class":252,"line":2201},[250,30413,2204],{"class":912},[250,30415,30416],{"class":252,"line":2207},[250,30417,2210],{"class":912},[250,30419,30420],{"class":252,"line":2213},[250,30421,986],{"class":912},[250,30423,30424],{"class":252,"line":2218},[250,30425,1053],{"class":912},[250,30427,30428,30430,30432,30434,30436],{"class":252,"line":2223},[250,30429,1565],{"class":786},[250,30431,1571],{"class":778},[250,30433,2230],{"class":912},[250,30435,2233],{"class":774},[250,30437,2236],{"class":912},[250,30439,30440],{"class":252,"line":2239},[250,30441,1053],{"class":912},[250,30443,30444,30446,30448,30450,30452,30454,30456,30458],{"class":252,"line":2244},[250,30445,1455],{"class":786},[250,30447,2249],{"class":778},[250,30449,1187],{"class":786},[250,30451,1901],{"class":912},[250,30453,1153],{"class":774},[250,30455,2258],{"class":912},[250,30457,2261],{"class":786},[250,30459,2264],{"class":912},[250,30461,30462,30464,30466,30468,30470,30472,30474,30476,30478,30480,30482,30484],{"class":252,"line":2267},[250,30463,1455],{"class":786},[250,30465,2272],{"class":778},[250,30467,1187],{"class":786},[250,30469,2277],{"class":912},[250,30471,2280],{"class":774},[250,30473,1434],{"class":912},[250,30475,1867],{"class":778},[250,30477,2287],{"class":786},[250,30479,2290],{"class":912},[250,30481,2293],{"class":786},[250,30483,2296],{"class":778},[250,30485,1593],{"class":912},[250,30487,30488],{"class":252,"line":2301},[250,30489,1053],{"class":912},[250,30491,30492,30494,30496,30498,30500],{"class":252,"line":2306},[250,30493,1856],{"class":912},[250,30495,1859],{"class":774},[250,30497,1434],{"class":912},[250,30499,2315],{"class":782},[250,30501,1885],{"class":912},[250,30503,30504,30506,30508,30510,30512,30514,30516],{"class":252,"line":2320},[250,30505,1856],{"class":912},[250,30507,1859],{"class":774},[250,30509,1434],{"class":912},[250,30511,2329],{"class":782},[250,30513,2332],{"class":912},[250,30515,2335],{"class":782},[250,30517,1885],{"class":912},[250,30519,30520,30522,30524,30526,30528,30530,30532],{"class":252,"line":2340},[250,30521,1856],{"class":912},[250,30523,1859],{"class":774},[250,30525,1434],{"class":912},[250,30527,2349],{"class":782},[250,30529,2352],{"class":912},[250,30531,2355],{"class":782},[250,30533,1885],{"class":912},[250,30535,30536,30538,30540,30542,30544,30546,30548,30550,30552,30554,30556,30558,30560,30562,30564],{"class":252,"line":2360},[250,30537,1856],{"class":912},[250,30539,1859],{"class":774},[250,30541,1434],{"class":912},[250,30543,2369],{"class":782},[250,30545,1434],{"class":782},[250,30547,2332],{"class":912},[250,30549,2287],{"class":786},[250,30551,1813],{"class":778},[250,30553,2380],{"class":782},[250,30555,2383],{"class":774},[250,30557,1434],{"class":782},[250,30559,1226],{"class":778},[250,30561,2390],{"class":782},[250,30563,2335],{"class":782},[250,30565,1885],{"class":912},[250,30567,30568],{"class":252,"line":2397},[250,30569,991],{"class":912},[250,30571,30572],{"class":252,"line":2402},[250,30573,795],{"emptyLinePlaceholder":129},[250,30575,30576,30578],{"class":252,"line":2407},[250,30577,2410],{"class":774},[250,30579,1906],{"class":912},[20,30581,2415],{},[47,30583,30584],{"className":758,"code":2418,"filename":760,"language":761,"meta":55,"style":55},[39,30585,30586,30590,30598,30602,30606],{"__ignoreMap":55},[250,30587,30588],{"class":252,"line":253},[250,30589,2425],{"class":768},[250,30591,30592,30594,30596],{"class":252,"line":113},[250,30593,824],{"class":774},[250,30595,1707],{"class":782},[250,30597,1710],{"class":782},[250,30599,30600],{"class":252,"line":110},[250,30601,795],{"emptyLinePlaceholder":129},[250,30603,30604],{"class":252,"line":269},[250,30605,2442],{"class":768},[250,30607,30608,30610,30612],{"class":252,"line":275},[250,30609,824],{"class":774},[250,30611,1707],{"class":782},[250,30613,2451],{"class":782},[72,30615],{},[31,30617,2457],{"id":2456},[2459,30619,2462],{"id":2461},[20,30621,2465],{},[47,30623,30624],{"className":1010,"code":2468,"filename":2469,"language":1012,"meta":55,"style":55},[39,30625,30626,30630,30638,30648,30658,30668,30672,30676,30692,30708,30724,30728,30732,30746,30752,30756,30760,30764,30768],{"__ignoreMap":55},[250,30627,30628],{"class":252,"line":253},[250,30629,2476],{"class":768},[250,30631,30632,30634,30636],{"class":252,"line":113},[250,30633,1360],{"class":786},[250,30635,2483],{"class":774},[250,30637,1118],{"class":912},[250,30639,30640,30642,30644,30646],{"class":252,"line":110},[250,30641,2490],{"class":1370},[250,30643,1007],{"class":786},[250,30645,1376],{"class":778},[250,30647,1379],{"class":912},[250,30649,30650,30652,30654,30656],{"class":252,"line":269},[250,30651,2501],{"class":1370},[250,30653,1007],{"class":786},[250,30655,2506],{"class":778},[250,30657,1379],{"class":912},[250,30659,30660,30662,30664,30666],{"class":252,"line":275},[250,30661,2513],{"class":1370},[250,30663,1007],{"class":786},[250,30665,1376],{"class":778},[250,30667,1379],{"class":912},[250,30669,30670],{"class":252,"line":281},[250,30671,991],{"class":912},[250,30673,30674],{"class":252,"line":287},[250,30675,795],{"emptyLinePlaceholder":129},[250,30677,30678,30680,30682,30684,30686,30688,30690],{"class":252,"line":293},[250,30679,1181],{"class":786},[250,30681,1184],{"class":778},[250,30683,1007],{"class":786},[250,30685,2483],{"class":774},[250,30687,1413],{"class":912},[250,30689,1416],{"class":786},[250,30691,1190],{"class":912},[250,30693,30694,30696,30698,30700,30702,30704,30706],{"class":252,"line":299},[250,30695,1195],{"class":912},[250,30697,1198],{"class":778},[250,30699,1201],{"class":912},[250,30701,1204],{"class":782},[250,30703,1207],{"class":912},[250,30705,1210],{"class":778},[250,30707,1219],{"class":912},[250,30709,30710,30712,30714,30716,30718,30720,30722],{"class":252,"line":132},[250,30711,1195],{"class":912},[250,30713,1226],{"class":778},[250,30715,1201],{"class":912},[250,30717,1231],{"class":782},[250,30719,1207],{"class":912},[250,30721,1236],{"class":778},[250,30723,1219],{"class":912},[250,30725,30726],{"class":252,"line":310},[250,30727,1317],{"class":912},[250,30729,30730],{"class":252,"line":316},[250,30731,795],{"emptyLinePlaceholder":129},[250,30733,30734,30736,30738,30740,30742,30744],{"class":252,"line":322},[250,30735,1019],{"class":786},[250,30737,1022],{"class":786},[250,30739,1109],{"class":774},[250,30741,1112],{"class":912},[250,30743,1115],{"class":786},[250,30745,1118],{"class":912},[250,30747,30748,30750],{"class":252,"line":328},[250,30749,1123],{"class":786},[250,30751,1118],{"class":912},[250,30753,30754],{"class":252,"line":334},[250,30755,2608],{"class":912},[250,30757,30758],{"class":252,"line":340},[250,30759,2613],{"class":912},[250,30761,30762],{"class":252,"line":346},[250,30763,2618],{"class":912},[250,30765,30766],{"class":252,"line":352},[250,30767,1161],{"class":912},[250,30769,30770],{"class":252,"line":358},[250,30771,1077],{"class":912},[2459,30773,2630],{"id":2629},[20,30775,2633],{},[47,30777,30778],{"className":1010,"code":2636,"filename":2637,"language":1012,"meta":55,"style":55},[39,30779,30780,30802,30820,30836,30840,30846],{"__ignoreMap":55},[250,30781,30782,30784,30786,30788,30790,30792,30794,30796,30798,30800],{"class":252,"line":253},[250,30783,1019],{"class":786},[250,30785,1022],{"class":786},[250,30787,1109],{"class":774},[250,30789,1434],{"class":912},[250,30791,1437],{"class":786},[250,30793,1440],{"class":912},[250,30795,1443],{"class":1370},[250,30797,1446],{"class":912},[250,30799,1115],{"class":786},[250,30801,1118],{"class":912},[250,30803,30804,30806,30808,30810,30812,30814,30816,30818],{"class":252,"line":113},[250,30805,1455],{"class":786},[250,30807,2668],{"class":778},[250,30809,1187],{"class":786},[250,30811,2673],{"class":912},[250,30813,2676],{"class":774},[250,30815,1434],{"class":912},[250,30817,2681],{"class":782},[250,30819,1885],{"class":912},[250,30821,30822,30824,30826,30828,30830,30832,30834],{"class":252,"line":110},[250,30823,1455],{"class":786},[250,30825,2690],{"class":778},[250,30827,1187],{"class":786},[250,30829,1463],{"class":786},[250,30831,2697],{"class":912},[250,30833,905],{"class":774},[250,30835,1906],{"class":912},[250,30837,30838],{"class":252,"line":269},[250,30839,1053],{"class":912},[250,30841,30842,30844],{"class":252,"line":275},[250,30843,1123],{"class":786},[250,30845,2712],{"class":912},[250,30847,30848],{"class":252,"line":281},[250,30849,1077],{"class":912},[2459,30851,2720],{"id":2719},[20,30853,2723],{},[47,30855,30856],{"className":1010,"code":2726,"filename":2727,"language":1012,"meta":55,"style":55},[39,30857,30858,30876,30886,30892,30898,30904,30908,30912,30916,30934,30968,30972,30976,30982,30998,31012,31016],{"__ignoreMap":55},[250,30859,30860,30862,30864,30866,30868,30870,30872,30874],{"class":252,"line":253},[250,30861,1019],{"class":786},[250,30863,1022],{"class":786},[250,30865,1109],{"class":774},[250,30867,1434],{"class":912},[250,30869,1437],{"class":786},[250,30871,2015],{"class":912},[250,30873,1115],{"class":786},[250,30875,1118],{"class":912},[250,30877,30878,30880,30882,30884],{"class":252,"line":113},[250,30879,1455],{"class":786},[250,30881,2754],{"class":778},[250,30883,1187],{"class":786},[250,30885,1190],{"class":912},[250,30887,30888,30890],{"class":252,"line":110},[250,30889,2763],{"class":782},[250,30891,927],{"class":912},[250,30893,30894,30896],{"class":252,"line":269},[250,30895,2770],{"class":782},[250,30897,927],{"class":912},[250,30899,30900,30902],{"class":252,"line":275},[250,30901,2777],{"class":782},[250,30903,927],{"class":912},[250,30905,30906],{"class":252,"line":281},[250,30907,2784],{"class":912},[250,30909,30910],{"class":252,"line":287},[250,30911,1053],{"class":912},[250,30913,30914],{"class":252,"line":293},[250,30915,2793],{"class":768},[250,30917,30918,30920,30922,30924,30926,30928,30930,30932],{"class":252,"line":299},[250,30919,1455],{"class":786},[250,30921,2800],{"class":778},[250,30923,1187],{"class":786},[250,30925,1463],{"class":786},[250,30927,1571],{"class":778},[250,30929,2230],{"class":912},[250,30931,2233],{"class":774},[250,30933,1982],{"class":912},[250,30935,30936,30938,30940,30942,30944,30946,30948,30950,30952,30954,30956,30958,30960,30962,30964,30966],{"class":252,"line":132},[250,30937,2817],{"class":912},[250,30939,2820],{"class":774},[250,30941,1574],{"class":912},[250,30943,2825],{"class":1370},[250,30945,1446],{"class":912},[250,30947,1115],{"class":786},[250,30949,2077],{"class":774},[250,30951,2834],{"class":912},[250,30953,2837],{"class":774},[250,30955,1574],{"class":912},[250,30957,2842],{"class":1370},[250,30959,1446],{"class":912},[250,30961,1115],{"class":786},[250,30963,2849],{"class":912},[250,30965,905],{"class":774},[250,30967,2854],{"class":912},[250,30969,30970],{"class":252,"line":310},[250,30971,2859],{"class":912},[250,30973,30974],{"class":252,"line":316},[250,30975,1053],{"class":912},[250,30977,30978,30980],{"class":252,"line":322},[250,30979,1123],{"class":786},[250,30981,1118],{"class":912},[250,30983,30984,30986,30988,30990,30992,30994,30996],{"class":252,"line":328},[250,30985,2874],{"class":912},[250,30987,2820],{"class":774},[250,30989,1574],{"class":912},[250,30991,2842],{"class":1370},[250,30993,1446],{"class":912},[250,30995,1115],{"class":786},[250,30997,2887],{"class":912},[250,30999,31000,31002,31004,31006,31008,31010],{"class":252,"line":334},[250,31001,2892],{"class":912},[250,31003,1641],{"class":786},[250,31005,1644],{"class":774},[250,31007,1647],{"class":912},[250,31009,1650],{"class":774},[250,31011,1156],{"class":912},[250,31013,31014],{"class":252,"line":340},[250,31015,1161],{"class":912},[250,31017,31018],{"class":252,"line":346},[250,31019,1077],{"class":912},[72,31021],{},[31,31023,2916],{"id":2915},[2459,31025,2920],{"id":2919},[2922,31027,31028,31046,31100],{},[564,31029,31030,31032,31044,2947],{},[546,31031,2928],{},[47,31033,31034],{"className":758,"code":2931,"language":761,"meta":55,"style":55},[39,31035,31036],{"__ignoreMap":55},[250,31037,31038,31040,31042],{"class":252,"line":253},[250,31039,824],{"class":774},[250,31041,2940],{"class":782},[250,31043,2943],{"class":782},[2945,31045],{},[564,31047,31048,31050],{},[546,31049,2952],{},[47,31051,31052],{"className":902,"code":2955,"language":905,"meta":55,"style":55},[39,31053,31054,31058,31064,31074,31084,31092,31096],{"__ignoreMap":55},[250,31055,31056],{"class":252,"line":253},[250,31057,913],{"class":912},[250,31059,31060,31062],{"class":252,"line":113},[250,31061,932],{"class":778},[250,31063,935],{"class":912},[250,31065,31066,31068,31070,31072],{"class":252,"line":110},[250,31067,940],{"class":778},[250,31069,921],{"class":912},[250,31071,945],{"class":782},[250,31073,927],{"class":912},[250,31075,31076,31078,31080,31082],{"class":252,"line":269},[250,31077,952],{"class":778},[250,31079,921],{"class":912},[250,31081,957],{"class":782},[250,31083,927],{"class":912},[250,31085,31086,31088,31090],{"class":252,"line":275},[250,31087,976],{"class":778},[250,31089,921],{"class":912},[250,31091,981],{"class":782},[250,31093,31094],{"class":252,"line":281},[250,31095,986],{"class":912},[250,31097,31098],{"class":252,"line":287},[250,31099,991],{"class":912},[564,31101,31102,31104],{},[546,31103,3008],{},[47,31105,31106],{"className":758,"code":3011,"language":761,"meta":55,"style":55},[39,31107,31108,31112],{"__ignoreMap":55},[250,31109,31110],{"class":252,"line":253},[250,31111,3018],{"class":768},[250,31113,31114,31116,31118],{"class":252,"line":113},[250,31115,824],{"class":774},[250,31117,3025],{"class":778},[250,31119,3028],{"class":782},[2459,31121,3032],{"id":3031},[24,31123,31124,31134],{"type":26},[561,31125,31126,31130,31132],{},[564,31127,3039,31128],{},[39,31129,3042],{},[564,31131,3045],{},[564,31133,3048],{},[20,31135,3051,31136,3056],{},[203,31137,3054],{"href":3054,"rel":31138},[207],[72,31140],{},[31,31142,3062],{"id":3061},[2459,31144,3066],{"id":3065},[3068,31146,3071],{"id":3070},[47,31148,31149],{"className":758,"code":3074,"filename":760,"language":761,"meta":55,"style":55},[39,31150,31151,31155],{"__ignoreMap":55},[250,31152,31153],{"class":252,"line":253},[250,31154,3081],{"class":768},[250,31156,31157,31159],{"class":252,"line":113},[250,31158,3070],{"class":774},[250,31160,3088],{"class":782},[3068,31162,3092],{"id":3091},[47,31164,31165],{"className":902,"code":3095,"filename":3096,"language":905,"meta":55,"style":55},[39,31166,31167,31171,31177,31185,31189,31195,31203,31207],{"__ignoreMap":55},[250,31168,31169],{"class":252,"line":253},[250,31170,913],{"class":912},[250,31172,31173,31175],{"class":252,"line":113},[250,31174,3107],{"class":778},[250,31176,935],{"class":912},[250,31178,31179,31181,31183],{"class":252,"line":110},[250,31180,3114],{"class":778},[250,31182,921],{"class":912},[250,31184,3119],{"class":782},[250,31186,31187],{"class":252,"line":269},[250,31188,1048],{"class":912},[250,31190,31191,31193],{"class":252,"line":275},[250,31192,3128],{"class":778},[250,31194,935],{"class":912},[250,31196,31197,31199,31201],{"class":252,"line":281},[250,31198,3135],{"class":778},[250,31200,921],{"class":912},[250,31202,3140],{"class":782},[250,31204,31205],{"class":252,"line":287},[250,31206,986],{"class":912},[250,31208,31209],{"class":252,"line":293},[250,31210,991],{"class":912},[3068,31212,3152],{"id":3151},[47,31214,31215],{"className":3155,"code":3156,"filename":3157,"language":3158,"meta":55,"style":55},[39,31216,31217,31221,31225,31229,31233,31237,31241,31245,31249,31253,31257],{"__ignoreMap":55},[250,31218,31219],{"class":252,"line":253},[250,31220,3165],{},[250,31222,31223],{"class":252,"line":113},[250,31224,3170],{},[250,31226,31227],{"class":252,"line":110},[250,31228,795],{"emptyLinePlaceholder":129},[250,31230,31231],{"class":252,"line":269},[250,31232,3179],{},[250,31234,31235],{"class":252,"line":275},[250,31236,3184],{},[250,31238,31239],{"class":252,"line":281},[250,31240,795],{"emptyLinePlaceholder":129},[250,31242,31243],{"class":252,"line":287},[250,31244,3193],{},[250,31246,31247],{"class":252,"line":293},[250,31248,3198],{},[250,31250,31251],{"class":252,"line":299},[250,31252,795],{"emptyLinePlaceholder":129},[250,31254,31255],{"class":252,"line":132},[250,31256,3207],{},[250,31258,31259],{"class":252,"line":310},[250,31260,3212],{},[3068,31262,3216],{"id":3215},[20,31264,3219],{},[47,31266,31267],{"className":758,"code":3222,"filename":760,"language":761,"meta":55,"style":55},[39,31268,31269,31277],{"__ignoreMap":55},[250,31270,31271,31273,31275],{"class":252,"line":253},[250,31272,856],{"class":774},[250,31274,3231],{"class":782},[250,31276,3234],{"class":782},[250,31278,31279,31281,31283],{"class":252,"line":113},[250,31280,824],{"class":774},[250,31282,1707],{"class":782},[250,31284,3243],{"class":782},[161,31286,31287],{"icon":3246,"title":3247},[20,31288,3250],{},[72,31290],{},[31,31292,3256],{"id":3255},[20,31294,3259],{},[561,31296,31297,31299,31301,31303,31305],{},[564,31298,3264],{},[564,31300,3267],{},[564,31302,3270],{},[564,31304,3273],{},[564,31306,3276],{},[2459,31308,3280],{"id":3279},[645,31310,31311,31319],{},[648,31312,31313],{},[651,31314,31315,31317],{},[654,31316,3289],{},[654,31318,3292],{},[666,31320,31321,31329,31337,31345,31353],{},[651,31322,31323,31327],{},[671,31324,3299,31325],{},[39,31326,3302],{},[671,31328,3305],{},[651,31330,31331,31335],{},[671,31332,3299,31333],{},[39,31334,3312],{},[671,31336,3315],{},[651,31338,31339,31343],{},[671,31340,3299,31341],{},[39,31342,3322],{},[671,31344,3325],{},[651,31346,31347,31351],{},[671,31348,3299,31349],{},[39,31350,3332],{},[671,31352,3335],{},[651,31354,31355,31359],{},[671,31356,3340,31357],{},[39,31358,3343],{},[671,31360,3346],{},[72,31362],{},[15,31364,3352],{"id":3351},[20,31366,31367,3358],{},[546,31368,3357],{},[561,31370,31371,31375,31379,31383,31387],{},[564,31372,31373,3366],{},[546,31374,3365],{},[564,31376,31377,3371],{},[546,31378,603],{},[564,31380,31381,3377],{},[546,31382,3376],{},[564,31384,31385,3383],{},[546,31386,3382],{},[564,31388,31389,3389],{},[546,31390,3388],{},[20,31392,3392],{},[2459,31394,3396],{"id":3395},[561,31396,31397,31399,31401,31403,31405],{},[564,31398,3401],{},[564,31400,3404],{},[564,31402,3407],{},[564,31404,3410],{},[564,31406,3413],{},[2459,31408,3417],{"id":3416},[561,31410,31411,31413,31415],{},[564,31412,3422],{},[564,31414,3425],{},[564,31416,3428],{},[20,31418,3431],{},[20,31420,3434],{},[500,31422,3437],{},{"title":55,"searchDepth":110,"depth":110,"links":31424},[31425,31426,31427,31428,31429,31430,31431,31432,31433,31438,31442,31450],{"id":595,"depth":113,"text":596},{"id":639,"depth":113,"text":640},{"id":751,"depth":113,"text":752},{"id":837,"depth":113,"text":838},{"id":996,"depth":113,"text":997},{"id":1085,"depth":113,"text":1086},{"id":1691,"depth":113,"text":1692},{"id":1744,"depth":113,"text":1745},{"id":2456,"depth":113,"text":2457,"children":31434},[31435,31436,31437],{"id":2461,"depth":110,"text":2462},{"id":2629,"depth":110,"text":2630},{"id":2719,"depth":110,"text":2720},{"id":2915,"depth":113,"text":2916,"children":31439},[31440,31441],{"id":2919,"depth":110,"text":2920},{"id":3031,"depth":110,"text":3032},{"id":3061,"depth":113,"text":3062,"children":31443},[31444],{"id":3065,"depth":110,"text":3066,"children":31445},[31446,31447,31448,31449],{"id":3070,"depth":269,"text":3071},{"id":3091,"depth":269,"text":3092},{"id":3151,"depth":269,"text":3152},{"id":3215,"depth":269,"text":3216},{"id":3255,"depth":113,"text":3256,"children":31451},[31452,31453,31454],{"id":3279,"depth":110,"text":3280},{"id":3395,"depth":110,"text":3396},{"id":3416,"depth":110,"text":3417},{"type":12,"value":31456},[31457,31459,31463,31467,31469,31481],[15,31458,541],{"id":540},[20,31460,544,31461,549],{},[546,31462,548],{},[20,31464,552,31465,556],{},[546,31466,555],{},[20,31468,559],{},[561,31470,31471,31473,31475,31477,31479],{},[564,31472,566],{},[564,31474,569],{},[564,31476,572],{},[564,31478,575],{},[564,31480,578],{},[20,31482,581,31483,585],{},[546,31484,584],{},[824,3504,3505,3506,3507,3508,3509],{},{"title":533,"description":3471},"bun-nitro-stack",{"id":3518,"title":3519,"author":31490,"body":31491,"canonical":115,"categories":115,"date":4050,"description":4051,"excerpt":31871,"extension":118,"img":4068,"keywords":31887,"language":3510,"meta":31888,"navigation":129,"ogImage":115,"path":4075,"rating":275,"readTime":132,"seo":31889,"stem":4077,"tag":3515,"__hash__":4078,"slug":4070},{"name":8,"img":10,"website":535},{"type":12,"value":31492,"toc":31850},[31493,31495,31505,31507,31509,31511,31521,31529,31533,31535,31537,31539,31561,31567,31569,31571,31577,31579,31603,31608,31613,31615,31617,31624,31632,31634,31636,31638,31643,31645,31664,31666,31668,31670,31679,31681,31749,31756,31758,31760,31767,31769,31793,31798,31800,31802,31809,31811,31819,31823,31825,31827,31834,31838,31840,31842,31844,31848],[15,31494,541],{"id":540},[20,31496,31497,3530,31499,3534,31501,3538,31503],{},[546,31498,3529],{},[546,31500,3533],{},[546,31502,3537],{},[3540,31504,3543],{"index":3542},[20,31506,3546],{},[15,31508,748],{"id":747},[31,31510,3552],{"id":3551},[20,31512,3555,31513,3559,31515,3563,31517,3567,31519],{},[546,31514,3558],{},[546,31516,3562],{},[546,31518,3566],{},[3540,31520,3570],{"index":1198},[24,31522,31523],{"type":631},[20,31524,3575,31525,3579,31527],{},[546,31526,3578],{},[3540,31528,3582],{"index":1226},[20,31530,3585,31531,3590],{},[3587,31532,3589],{},[72,31534],{},[31,31536,3596],{"id":3595},[20,31538,3599],{},[561,31540,31541,31545,31549,31553,31557],{},[564,31542,31543,3607],{},[546,31544,3606],{},[564,31546,31547],{},[546,31548,3612],{},[564,31550,31551,3618],{},[546,31552,3617],{},[564,31554,31555,3624],{},[546,31556,3623],{},[564,31558,3627,31559],{},[3540,31560,3630],{"index":1249},[24,31562,31563],{"type":26},[20,31564,3635,31565],{},[3540,31566,3638],{"index":1273},[72,31568],{},[31,31570,3644],{"id":3643},[20,31572,3647,31573,3650,31575],{},[546,31574,3617],{},[3540,31576,3653],{"index":1297},[2459,31578,3657],{"id":3656},[47,31580,31581],{"className":3660,"code":3661,"language":3662,"meta":55,"style":55},[39,31582,31583,31587,31591,31595,31599],{"__ignoreMap":55},[250,31584,31585],{"class":252,"line":253},[250,31586,3669],{},[250,31588,31589],{"class":252,"line":113},[250,31590,3674],{},[250,31592,31593],{"class":252,"line":110},[250,31594,3679],{},[250,31596,31597],{"class":252,"line":269},[250,31598,3684],{},[250,31600,31601],{"class":252,"line":275},[250,31602,991],{},[20,31604,3691,31605,3698],{},[203,31606,3697],{"href":3694,"rel":31607,"title":3696},[207],[20,31609,3701,31610,2390],{},[203,31611,3697],{"href":3694,"rel":31612,"title":3696},[207],[72,31614],{},[31,31616,3710],{"id":3709},[20,31618,3713,31619,3717,31621,2390],{},[546,31620,3716],{},[203,31622,3697],{"href":3720,"rel":31623,"title":3696},[207],[47,31625,31626],{"className":3660,"code":3724,"language":3662,"meta":55,"style":55},[39,31627,31628],{"__ignoreMap":55},[250,31629,31630],{"class":252,"line":253},[250,31631,3724],{},[20,31633,3733],{},[72,31635],{},[31,31637,3739],{"id":3738},[20,31639,3742,31640,2390],{},[203,31641,3697],{"href":3745,"rel":31642,"title":3696},[207],[2459,31644,3750],{"id":3749},[561,31646,31647,31649,31651,31653,31655,31657,31659],{},[564,31648,3755],{},[564,31650,3758],{},[564,31652,3761],{},[564,31654,3764],{},[564,31656,3767],{},[564,31658,3770],{},[564,31660,3773,31661,2390],{},[203,31662,3697],{"href":3745,"rel":31663,"title":3696},[207],[20,31665,3779],{},[72,31667],{},[31,31669,3785],{"id":3784},[20,31671,3788,31672,3792,31674,3796,31676,2390],{},[39,31673,3791],{},[39,31675,3795],{},[203,31677,3697],{"href":3799,"rel":31678,"title":3696},[207],[2459,31680,3804],{"id":3803},[47,31682,31683],{"className":3660,"code":3807,"language":3662,"meta":55,"style":55},[39,31684,31685,31689,31693,31697,31701,31705,31709,31713,31717,31721,31725,31729,31733,31737,31741,31745],{"__ignoreMap":55},[250,31686,31687],{"class":252,"line":253},[250,31688,3814],{},[250,31690,31691],{"class":252,"line":113},[250,31692,3819],{},[250,31694,31695],{"class":252,"line":110},[250,31696,3824],{},[250,31698,31699],{"class":252,"line":269},[250,31700,3829],{},[250,31702,31703],{"class":252,"line":275},[250,31704,3834],{},[250,31706,31707],{"class":252,"line":281},[250,31708,3839],{},[250,31710,31711],{"class":252,"line":287},[250,31712,3834],{},[250,31714,31715],{"class":252,"line":293},[250,31716,3848],{},[250,31718,31719],{"class":252,"line":299},[250,31720,1547],{},[250,31722,31723],{"class":252,"line":132},[250,31724,795],{"emptyLinePlaceholder":129},[250,31726,31727],{"class":252,"line":310},[250,31728,3674],{},[250,31730,31731],{"class":252,"line":316},[250,31732,3865],{},[250,31734,31735],{"class":252,"line":322},[250,31736,3870],{},[250,31738,31739],{"class":252,"line":328},[250,31740,3875],{},[250,31742,31743],{"class":252,"line":334},[250,31744,3684],{},[250,31746,31747],{"class":252,"line":340},[250,31748,991],{},[20,31750,3886,31751,3890,31753,2390],{},[39,31752,3889],{},[203,31754,3697],{"href":3799,"rel":31755,"title":3696},[207],[72,31757],{},[31,31759,3899],{"id":3898},[20,31761,3902,31762,3906,31764,2390],{},[546,31763,3905],{},[203,31765,3697],{"href":3909,"rel":31766,"title":3696},[207],[2459,31768,3914],{"id":3913},[47,31770,31771],{"className":3660,"code":3917,"language":3662,"meta":55,"style":55},[39,31772,31773,31777,31781,31785,31789],{"__ignoreMap":55},[250,31774,31775],{"class":252,"line":253},[250,31776,3924],{},[250,31778,31779],{"class":252,"line":113},[250,31780,3929],{},[250,31782,31783],{"class":252,"line":110},[250,31784,3934],{},[250,31786,31787],{"class":252,"line":269},[250,31788,3939],{},[250,31790,31791],{"class":252,"line":275},[250,31792,991],{},[20,31794,3946,31795,2390],{},[203,31796,3697],{"href":3909,"rel":31797,"title":3696},[207],[72,31799],{},[31,31801,3955],{"id":3954},[20,31803,3958,31804,3962,31806,2390],{},[546,31805,3961],{},[203,31807,3697],{"href":3965,"rel":31808,"title":3696},[207],[2459,31810,3970],{"id":3969},[561,31812,31813,31815,31817],{},[564,31814,3975],{},[564,31816,3978],{},[564,31818,3981],{},[20,31820,3984,31821,3988],{},[546,31822,3987],{},[72,31824],{},[31,31826,3994],{"id":3993},[20,31828,3997,31829,4001,31831,2390],{},[546,31830,4000],{},[203,31832,3697],{"href":4004,"rel":31833,"title":3696},[207],[20,31835,4008,31836,4012],{},[546,31837,4011],{},[72,31839],{},[15,31841,3352],{"id":3351},[20,31843,4019],{},[20,31845,4022,31846,4026],{},[546,31847,4025],{},[500,31849,502],{},{"title":55,"searchDepth":110,"depth":110,"links":31851},[31852,31853,31854,31857,31858,31861,31864,31867,31870],{"id":3551,"depth":113,"text":3552},{"id":3595,"depth":113,"text":3596},{"id":3643,"depth":113,"text":3644,"children":31855},[31856],{"id":3656,"depth":110,"text":3657},{"id":3709,"depth":113,"text":3710},{"id":3738,"depth":113,"text":3739,"children":31859},[31860],{"id":3749,"depth":110,"text":3750},{"id":3784,"depth":113,"text":3785,"children":31862},[31863],{"id":3803,"depth":110,"text":3804},{"id":3898,"depth":113,"text":3899,"children":31865},[31866],{"id":3913,"depth":110,"text":3914},{"id":3954,"depth":113,"text":3955,"children":31868},[31869],{"id":3969,"depth":110,"text":3970},{"id":3993,"depth":113,"text":3994},{"type":12,"value":31872},[31873,31875,31885],[15,31874,541],{"id":540},[20,31876,31877,3530,31879,3534,31881,3538,31883],{},[546,31878,3529],{},[546,31880,3533],{},[546,31882,3537],{},[3540,31884,3543],{"index":3542},[20,31886,3546],{},[4070,3662,4071,4072,4073],{},{"title":3519,"description":4051},{"id":4080,"title":4081,"author":31891,"body":31892,"canonical":115,"categories":115,"date":3470,"description":8209,"excerpt":35471,"extension":118,"img":3502,"keywords":35489,"language":3510,"meta":35490,"navigation":129,"ogImage":115,"path":8236,"rating":275,"readTime":316,"seo":35491,"stem":8238,"tag":3515,"__hash__":8239,"slug":35492},{"name":8,"img":10,"website":535},{"type":12,"value":31893,"toc":35446},[31894,31896,31900,31904,31906,31910,31912,31914,31936,31940,31942,31944,31946,31948,31956,31958,31960,31962,32014,32018,32020,32022,32024,32028,32102,32104,32106,32108,32122,32126,32690,32694,32696,32698,32700,32704,32950,32952,32954,32956,32960,33342,33344,33346,33348,33352,33436,33438,33442,33654,33656,33658,33662,34456,34458,34462,34932,34934,34938,35142,35144,35146,35148,35180,35188,35190,35192,35194,35206,35208,35222,35224,35234,35236,35290,35292,35322,35324,35326,35328,35340,35342,35416,35418,35420,35424,35426,35440,35444],[15,31895,541],{"id":540},[20,31897,4089,31898,4093],{},[546,31899,4092],{},[20,31901,4096,31902,4100],{},[546,31903,4099],{},[20,31905,4103],{},[20,31907,4106,31908,4110],{},[546,31909,4109],{},[15,31911,4114],{"id":4113},[20,31913,4117],{},[561,31915,31916,31920,31924,31928,31932],{},[564,31917,31918,4125],{},[546,31919,4124],{},[564,31921,31922,4131],{},[546,31923,4130],{},[564,31925,31926,4137],{},[546,31927,4136],{},[564,31929,31930,4143],{},[546,31931,4142],{},[564,31933,31934,4149],{},[546,31935,4148],{},[24,31937,31938],{"type":631},[20,31939,4154],{},[72,31941],{},[15,31943,748],{"id":747},[31,31945,4162],{"id":4161},[20,31947,4165],{},[561,31949,31950,31952,31954],{},[564,31951,4170],{},[564,31953,4173],{},[564,31955,4176],{},[72,31957],{},[31,31959,4182],{"id":4181},[20,31961,4185],{},[47,31963,31964],{"className":758,"code":4188,"filename":760,"language":761,"meta":55,"style":55},[39,31965,31966,31970,31978,31984,31988,31992,32002],{"__ignoreMap":55},[250,31967,31968],{"class":252,"line":253},[250,31969,4195],{"class":768},[250,31971,31972,31974,31976],{"class":252,"line":113},[250,31973,4200],{"class":774},[250,31975,4203],{"class":782},[250,31977,4206],{"class":782},[250,31979,31980,31982],{"class":252,"line":110},[250,31981,874],{"class":778},[250,31983,4206],{"class":782},[250,31985,31986],{"class":252,"line":269},[250,31987,795],{"emptyLinePlaceholder":129},[250,31989,31990],{"class":252,"line":275},[250,31991,4221],{"class":768},[250,31993,31994,31996,31998,32000],{"class":252,"line":281},[250,31995,4226],{"class":774},[250,31997,808],{"class":782},[250,31999,4231],{"class":782},[250,32001,4234],{"class":782},[250,32003,32004,32006,32008,32010,32012],{"class":252,"line":287},[250,32005,4226],{"class":774},[250,32007,808],{"class":782},[250,32009,4243],{"class":778},[250,32011,4246],{"class":782},[250,32013,4249],{"class":782},[24,32015,32016],{"type":26},[20,32017,4254],{},[72,32019],{},[31,32021,4260],{"id":4259},[20,32023,4263],{},[20,32025,1092,32026,1007],{},[39,32027,4268],{},[47,32029,32030],{"className":1010,"code":4271,"filename":4268,"language":1012,"meta":55,"style":55},[39,32031,32032,32044,32048,32058,32066,32074,32082,32086,32094,32098],{"__ignoreMap":55},[250,32033,32034,32036,32038,32040,32042],{"class":252,"line":253},[250,32035,1763],{"class":786},[250,32037,4280],{"class":912},[250,32039,1769],{"class":786},[250,32041,4285],{"class":782},[250,32043,1379],{"class":912},[250,32045,32046],{"class":252,"line":113},[250,32047,795],{"emptyLinePlaceholder":129},[250,32049,32050,32052,32054,32056],{"class":252,"line":110},[250,32051,1019],{"class":786},[250,32053,1022],{"class":786},[250,32055,4300],{"class":774},[250,32057,1028],{"class":912},[250,32059,32060,32062,32064],{"class":252,"line":269},[250,32061,4307],{"class":912},[250,32063,4310],{"class":782},[250,32065,927],{"class":912},[250,32067,32068,32070,32072],{"class":252,"line":275},[250,32069,4317],{"class":912},[250,32071,4320],{"class":782},[250,32073,927],{"class":912},[250,32075,32076,32078,32080],{"class":252,"line":281},[250,32077,4327],{"class":912},[250,32079,4330],{"class":782},[250,32081,927],{"class":912},[250,32083,32084],{"class":252,"line":287},[250,32085,4337],{"class":912},[250,32087,32088,32090,32092],{"class":252,"line":293},[250,32089,4342],{"class":912},[250,32091,4345],{"class":782},[250,32093,927],{"class":912},[250,32095,32096],{"class":252,"line":299},[250,32097,1048],{"class":912},[250,32099,32100],{"class":252,"line":132},[250,32101,1077],{"class":912},[72,32103],{},[31,32105,4361],{"id":4360},[20,32107,4364],{},[561,32109,32110,32114,32118],{},[564,32111,32112,4372],{},[546,32113,4371],{},[564,32115,32116,4378],{},[546,32117,4377],{},[564,32119,32120,4384],{},[546,32121,4383],{},[20,32123,1092,32124,1007],{},[39,32125,4389],{},[47,32127,32128],{"className":1010,"code":4392,"filename":4389,"language":1012,"meta":55,"style":55},[39,32129,32130,32142,32154,32158,32162,32180,32196,32212,32224,32240,32258,32282,32298,32312,32316,32320,32324,32342,32358,32384,32396,32412,32428,32442,32458,32472,32476,32480,32484,32502,32518,32530,32538,32550,32562,32570,32582,32606,32622,32626,32630,32634,32648,32662,32676],{"__ignoreMap":55},[250,32131,32132,32134,32136,32138,32140],{"class":252,"line":253},[250,32133,1763],{"class":786},[250,32135,4401],{"class":912},[250,32137,1769],{"class":786},[250,32139,4406],{"class":782},[250,32141,1379],{"class":912},[250,32143,32144,32146,32148,32150,32152],{"class":252,"line":113},[250,32145,1763],{"class":786},[250,32147,4415],{"class":912},[250,32149,1769],{"class":786},[250,32151,4420],{"class":782},[250,32153,1379],{"class":912},[250,32155,32156],{"class":252,"line":110},[250,32157,795],{"emptyLinePlaceholder":129},[250,32159,32160],{"class":252,"line":269},[250,32161,4431],{"class":768},[250,32163,32164,32166,32168,32170,32172,32174,32176,32178],{"class":252,"line":275},[250,32165,1019],{"class":786},[250,32167,4438],{"class":786},[250,32169,4441],{"class":778},[250,32171,1187],{"class":786},[250,32173,4446],{"class":774},[250,32175,1434],{"class":912},[250,32177,4451],{"class":782},[250,32179,4454],{"class":912},[250,32181,32182,32184,32186,32188,32190,32192,32194],{"class":252,"line":281},[250,32183,4459],{"class":912},[250,32185,52],{"class":774},[250,32187,1434],{"class":912},[250,32189,4466],{"class":782},[250,32191,2380],{"class":912},[250,32193,4471],{"class":774},[250,32195,1156],{"class":912},[250,32197,32198,32200,32202,32204,32206,32208,32210],{"class":252,"line":287},[250,32199,4478],{"class":912},[250,32201,52],{"class":774},[250,32203,1434],{"class":912},[250,32205,4485],{"class":782},[250,32207,2380],{"class":912},[250,32209,4490],{"class":774},[250,32211,1156],{"class":912},[250,32213,32214,32216,32218,32220,32222],{"class":252,"line":293},[250,32215,4497],{"class":912},[250,32217,52],{"class":774},[250,32219,1434],{"class":912},[250,32221,4504],{"class":782},[250,32223,4507],{"class":912},[250,32225,32226,32228,32230,32232,32234,32236,32238],{"class":252,"line":299},[250,32227,4512],{"class":912},[250,32229,4515],{"class":774},[250,32231,1434],{"class":912},[250,32233,4520],{"class":782},[250,32235,2380],{"class":912},[250,32237,4490],{"class":774},[250,32239,1156],{"class":912},[250,32241,32242,32244,32246,32248,32250,32252,32254,32256],{"class":252,"line":132},[250,32243,4531],{"class":912},[250,32245,52],{"class":774},[250,32247,1434],{"class":912},[250,32249,4538],{"class":782},[250,32251,2380],{"class":912},[250,32253,4490],{"class":774},[250,32255,4545],{"class":912},[250,32257,4548],{"class":768},[250,32259,32260,32262,32264,32266,32268,32270,32272,32274,32276,32278,32280],{"class":252,"line":310},[250,32261,4553],{"class":912},[250,32263,4556],{"class":774},[250,32265,1434],{"class":912},[250,32267,4561],{"class":782},[250,32269,4564],{"class":912},[250,32271,4567],{"class":782},[250,32273,4570],{"class":912},[250,32275,4573],{"class":774},[250,32277,1434],{"class":912},[250,32279,1066],{"class":778},[250,32281,4507],{"class":912},[250,32283,32284,32286,32288,32290,32292,32294,32296],{"class":252,"line":316},[250,32285,4584],{"class":912},[250,32287,4556],{"class":774},[250,32289,1434],{"class":912},[250,32291,4591],{"class":782},[250,32293,4564],{"class":912},[250,32295,4596],{"class":782},[250,32297,4599],{"class":912},[250,32299,32300,32302,32304,32306,32308,32310],{"class":252,"line":322},[250,32301,4604],{"class":912},[250,32303,4573],{"class":774},[250,32305,1434],{"class":912},[250,32307,4611],{"class":774},[250,32309,4614],{"class":782},[250,32311,4507],{"class":912},[250,32313,32314],{"class":252,"line":328},[250,32315,1077],{"class":912},[250,32317,32318],{"class":252,"line":334},[250,32319,795],{"emptyLinePlaceholder":129},[250,32321,32322],{"class":252,"line":340},[250,32323,4629],{"class":768},[250,32325,32326,32328,32330,32332,32334,32336,32338,32340],{"class":252,"line":346},[250,32327,1019],{"class":786},[250,32329,4438],{"class":786},[250,32331,1405],{"class":778},[250,32333,1187],{"class":786},[250,32335,4446],{"class":774},[250,32337,1434],{"class":912},[250,32339,4646],{"class":782},[250,32341,4454],{"class":912},[250,32343,32344,32346,32348,32350,32352,32354,32356],{"class":252,"line":352},[250,32345,4459],{"class":912},[250,32347,52],{"class":774},[250,32349,1434],{"class":912},[250,32351,4466],{"class":782},[250,32353,2380],{"class":912},[250,32355,4471],{"class":774},[250,32357,1156],{"class":912},[250,32359,32360,32362,32364,32366,32368,32370,32372,32374,32376,32378,32380,32382],{"class":252,"line":358},[250,32361,4669],{"class":912},[250,32363,52],{"class":774},[250,32365,1434],{"class":912},[250,32367,4676],{"class":782},[250,32369,2380],{"class":912},[250,32371,4490],{"class":774},[250,32373,1647],{"class":912},[250,32375,4573],{"class":774},[250,32377,1434],{"class":912},[250,32379,1631],{"class":782},[250,32381,4691],{"class":912},[250,32383,4694],{"class":768},[250,32385,32386,32388,32390,32392,32394],{"class":252,"line":364},[250,32387,4699],{"class":912},[250,32389,52],{"class":774},[250,32391,1434],{"class":912},[250,32393,4706],{"class":782},[250,32395,4507],{"class":912},[250,32397,32398,32400,32402,32404,32406,32408,32410],{"class":252,"line":370},[250,32399,4713],{"class":912},[250,32401,4515],{"class":774},[250,32403,1434],{"class":912},[250,32405,4720],{"class":782},[250,32407,2380],{"class":912},[250,32409,4490],{"class":774},[250,32411,1156],{"class":912},[250,32413,32414,32416,32418,32420,32422,32424,32426],{"class":252,"line":376},[250,32415,4584],{"class":912},[250,32417,4556],{"class":774},[250,32419,1434],{"class":912},[250,32421,4591],{"class":782},[250,32423,4564],{"class":912},[250,32425,4596],{"class":782},[250,32427,4599],{"class":912},[250,32429,32430,32432,32434,32436,32438,32440],{"class":252,"line":382},[250,32431,4604],{"class":912},[250,32433,4573],{"class":774},[250,32435,1434],{"class":912},[250,32437,4611],{"class":774},[250,32439,4614],{"class":782},[250,32441,4507],{"class":912},[250,32443,32444,32446,32448,32450,32452,32454,32456],{"class":252,"line":388},[250,32445,4761],{"class":912},[250,32447,4556],{"class":774},[250,32449,1434],{"class":912},[250,32451,4768],{"class":782},[250,32453,4564],{"class":912},[250,32455,4596],{"class":782},[250,32457,4599],{"class":912},[250,32459,32460,32462,32464,32466,32468,32470],{"class":252,"line":393},[250,32461,4604],{"class":912},[250,32463,4573],{"class":774},[250,32465,1434],{"class":912},[250,32467,4611],{"class":774},[250,32469,4614],{"class":782},[250,32471,4507],{"class":912},[250,32473,32474],{"class":252,"line":399},[250,32475,1077],{"class":912},[250,32477,32478],{"class":252,"line":405},[250,32479,795],{"emptyLinePlaceholder":129},[250,32481,32482],{"class":252,"line":410},[250,32483,4801],{"class":768},[250,32485,32486,32488,32490,32492,32494,32496,32498,32500],{"class":252,"line":415},[250,32487,1019],{"class":786},[250,32489,4438],{"class":786},[250,32491,4810],{"class":778},[250,32493,1187],{"class":786},[250,32495,4446],{"class":774},[250,32497,1434],{"class":912},[250,32499,4819],{"class":782},[250,32501,4454],{"class":912},[250,32503,32504,32506,32508,32510,32512,32514,32516],{"class":252,"line":420},[250,32505,4459],{"class":912},[250,32507,52],{"class":774},[250,32509,1434],{"class":912},[250,32511,4466],{"class":782},[250,32513,2380],{"class":912},[250,32515,4471],{"class":774},[250,32517,1156],{"class":912},[250,32519,32520,32522,32524,32526,32528],{"class":252,"line":426},[250,32521,4842],{"class":912},[250,32523,52],{"class":774},[250,32525,1434],{"class":912},[250,32527,4849],{"class":782},[250,32529,4852],{"class":912},[250,32531,32532,32534,32536],{"class":252,"line":431},[250,32533,4604],{"class":912},[250,32535,4490],{"class":774},[250,32537,4861],{"class":912},[250,32539,32540,32542,32544,32546,32548],{"class":252,"line":436},[250,32541,4604],{"class":912},[250,32543,4868],{"class":774},[250,32545,1112],{"class":912},[250,32547,1115],{"class":786},[250,32549,4875],{"class":912},[250,32551,32552,32554,32556,32558,32560],{"class":252,"line":442},[250,32553,4880],{"class":912},[250,32555,52],{"class":774},[250,32557,1434],{"class":912},[250,32559,4887],{"class":782},[250,32561,4852],{"class":912},[250,32563,32564,32566,32568],{"class":252,"line":447},[250,32565,4604],{"class":912},[250,32567,4490],{"class":774},[250,32569,4861],{"class":912},[250,32571,32572,32574,32576,32578,32580],{"class":252,"line":453},[250,32573,4604],{"class":912},[250,32575,4868],{"class":774},[250,32577,1112],{"class":912},[250,32579,1115],{"class":786},[250,32581,4910],{"class":912},[250,32583,32584,32586,32588,32590,32592,32594,32596,32598,32600,32602,32604],{"class":252,"line":459},[250,32585,4915],{"class":912},[250,32587,4556],{"class":774},[250,32589,1434],{"class":912},[250,32591,4922],{"class":782},[250,32593,2380],{"class":912},[250,32595,4490],{"class":774},[250,32597,1647],{"class":912},[250,32599,4573],{"class":774},[250,32601,1434],{"class":912},[250,32603,1198],{"class":778},[250,32605,4507],{"class":912},[250,32607,32608,32610,32612,32614,32616,32618,32620],{"class":252,"line":465},[250,32609,4941],{"class":912},[250,32611,4515],{"class":774},[250,32613,1434],{"class":912},[250,32615,4948],{"class":782},[250,32617,2380],{"class":912},[250,32619,4490],{"class":774},[250,32621,1156],{"class":912},[250,32623,32624],{"class":252,"line":471},[250,32625,1077],{"class":912},[250,32627,32628],{"class":252,"line":2201},[250,32629,795],{"emptyLinePlaceholder":129},[250,32631,32632],{"class":252,"line":2207},[250,32633,4967],{"class":768},[250,32635,32636,32638,32640,32642,32644,32646],{"class":252,"line":2213},[250,32637,1019],{"class":786},[250,32639,4974],{"class":786},[250,32641,4977],{"class":774},[250,32643,1187],{"class":786},[250,32645,4982],{"class":786},[250,32647,4985],{"class":912},[250,32649,32650,32652,32654,32656,32658,32660],{"class":252,"line":2218},[250,32651,1019],{"class":786},[250,32653,4974],{"class":786},[250,32655,4994],{"class":774},[250,32657,1187],{"class":786},[250,32659,4982],{"class":786},[250,32661,5001],{"class":912},[250,32663,32664,32666,32668,32670,32672,32674],{"class":252,"line":2223},[250,32665,1019],{"class":786},[250,32667,4974],{"class":786},[250,32669,5010],{"class":774},[250,32671,1187],{"class":786},[250,32673,4982],{"class":786},[250,32675,5017],{"class":912},[250,32677,32678,32680,32682,32684,32686,32688],{"class":252,"line":2239},[250,32679,1019],{"class":786},[250,32681,4974],{"class":786},[250,32683,5026],{"class":774},[250,32685,1187],{"class":786},[250,32687,4982],{"class":786},[250,32689,5033],{"class":912},[161,32691,32692],{"icon":5036,"title":5037},[20,32693,5040],{},[72,32695],{},[31,32697,5046],{"id":5045},[20,32699,5049],{},[20,32701,1092,32702,1007],{},[39,32703,5054],{},[47,32705,32706],{"className":1010,"code":5057,"filename":5054,"language":1012,"meta":55,"style":55},[39,32707,32708,32720,32732,32748,32752,32770,32784,32788,32792,32802,32812,32816,32820,32824,32828,32832,32836,32840,32844,32848,32852,32856,32860,32864,32868,32872,32876,32880,32884,32888,32892,32896,32900,32904,32908,32912,32916,32920,32924,32930,32934,32946],{"__ignoreMap":55},[250,32709,32710,32712,32714,32716,32718],{"class":252,"line":253},[250,32711,1763],{"class":786},[250,32713,5066],{"class":912},[250,32715,1769],{"class":786},[250,32717,5071],{"class":782},[250,32719,1379],{"class":912},[250,32721,32722,32724,32726,32728,32730],{"class":252,"line":113},[250,32723,1763],{"class":786},[250,32725,5080],{"class":912},[250,32727,1769],{"class":786},[250,32729,5085],{"class":782},[250,32731,1379],{"class":912},[250,32733,32734,32736,32738,32740,32742,32744,32746],{"class":252,"line":110},[250,32735,1763],{"class":786},[250,32737,5094],{"class":778},[250,32739,5097],{"class":786},[250,32741,5100],{"class":912},[250,32743,1769],{"class":786},[250,32745,5105],{"class":782},[250,32747,1379],{"class":912},[250,32749,32750],{"class":252,"line":269},[250,32751,795],{"emptyLinePlaceholder":129},[250,32753,32754,32756,32758,32760,32762,32764,32766,32768],{"class":252,"line":275},[250,32755,1181],{"class":786},[250,32757,5118],{"class":778},[250,32759,1187],{"class":786},[250,32761,1568],{"class":786},[250,32763,5125],{"class":774},[250,32765,1434],{"class":912},[250,32767,5130],{"class":782},[250,32769,1885],{"class":912},[250,32771,32772,32774,32776,32778,32780,32782],{"class":252,"line":281},[250,32773,1019],{"class":786},[250,32775,4438],{"class":786},[250,32777,5141],{"class":778},[250,32779,1187],{"class":786},[250,32781,5146],{"class":774},[250,32783,5149],{"class":912},[250,32785,32786],{"class":252,"line":287},[250,32787,795],{"emptyLinePlaceholder":129},[250,32789,32790],{"class":252,"line":293},[250,32791,5158],{"class":768},[250,32793,32794,32796,32798,32800],{"class":252,"line":299},[250,32795,1019],{"class":786},[250,32797,1845],{"class":786},[250,32799,5167],{"class":774},[250,32801,1851],{"class":912},[250,32803,32804,32806,32808,32810],{"class":252,"line":132},[250,32805,5174],{"class":912},[250,32807,5177],{"class":774},[250,32809,1434],{"class":912},[250,32811,5182],{"class":782},[250,32813,32814],{"class":252,"line":310},[250,32815,5187],{"class":782},[250,32817,32818],{"class":252,"line":316},[250,32819,5192],{"class":782},[250,32821,32822],{"class":252,"line":322},[250,32823,5197],{"class":782},[250,32825,32826],{"class":252,"line":328},[250,32827,5202],{"class":782},[250,32829,32830],{"class":252,"line":334},[250,32831,5207],{"class":782},[250,32833,32834],{"class":252,"line":340},[250,32835,5212],{"class":782},[250,32837,32838],{"class":252,"line":346},[250,32839,5217],{"class":782},[250,32841,32842],{"class":252,"line":352},[250,32843,5222],{"class":782},[250,32845,32846],{"class":252,"line":358},[250,32847,2210],{"class":782},[250,32849,32850],{"class":252,"line":364},[250,32851,795],{"emptyLinePlaceholder":129},[250,32853,32854],{"class":252,"line":370},[250,32855,5235],{"class":782},[250,32857,32858],{"class":252,"line":376},[250,32859,5192],{"class":782},[250,32861,32862],{"class":252,"line":382},[250,32863,5244],{"class":782},[250,32865,32866],{"class":252,"line":388},[250,32867,5249],{"class":782},[250,32869,32870],{"class":252,"line":393},[250,32871,5254],{"class":782},[250,32873,32874],{"class":252,"line":399},[250,32875,5259],{"class":782},[250,32877,32878],{"class":252,"line":405},[250,32879,5264],{"class":782},[250,32881,32882],{"class":252,"line":410},[250,32883,2210],{"class":782},[250,32885,32886],{"class":252,"line":415},[250,32887,795],{"emptyLinePlaceholder":129},[250,32889,32890],{"class":252,"line":420},[250,32891,5277],{"class":782},[250,32893,32894],{"class":252,"line":426},[250,32895,5192],{"class":782},[250,32897,32898],{"class":252,"line":431},[250,32899,5286],{"class":782},[250,32901,32902],{"class":252,"line":436},[250,32903,5291],{"class":782},[250,32905,32906],{"class":252,"line":442},[250,32907,5296],{"class":782},[250,32909,32910],{"class":252,"line":447},[250,32911,5301],{"class":782},[250,32913,32914],{"class":252,"line":453},[250,32915,5306],{"class":782},[250,32917,32918],{"class":252,"line":459},[250,32919,5311],{"class":782},[250,32921,32922],{"class":252,"line":465},[250,32923,2210],{"class":782},[250,32925,32926,32928],{"class":252,"line":471},[250,32927,5320],{"class":782},[250,32929,1885],{"class":912},[250,32931,32932],{"class":252,"line":2201},[250,32933,1053],{"class":912},[250,32935,32936,32938,32940,32942,32944],{"class":252,"line":2207},[250,32937,1856],{"class":912},[250,32939,1859],{"class":774},[250,32941,1434],{"class":912},[250,32943,5337],{"class":782},[250,32945,1885],{"class":912},[250,32947,32948],{"class":252,"line":2213},[250,32949,991],{"class":912},[72,32951],{},[31,32953,5349],{"id":5348},[20,32955,5352],{},[20,32957,1092,32958,1007],{},[39,32959,5357],{},[47,32961,32962],{"className":1010,"code":5360,"filename":5357,"language":1012,"meta":55,"style":55},[39,32963,32964,32976,32988,32992,33002,33026,33050,33074,33098,33122,33146,33170,33194,33218,33222,33226,33244,33248,33262,33266,33270,33284,33298,33304,33312,33316,33320,33324,33338],{"__ignoreMap":55},[250,32965,32966,32968,32970,32972,32974],{"class":252,"line":253},[250,32967,1763],{"class":786},[250,32969,5369],{"class":912},[250,32971,1769],{"class":786},[250,32973,5374],{"class":782},[250,32975,1379],{"class":912},[250,32977,32978,32980,32982,32984,32986],{"class":252,"line":113},[250,32979,1763],{"class":786},[250,32981,5383],{"class":912},[250,32983,1769],{"class":786},[250,32985,5388],{"class":782},[250,32987,1379],{"class":912},[250,32989,32990],{"class":252,"line":110},[250,32991,795],{"emptyLinePlaceholder":129},[250,32993,32994,32996,32998,33000],{"class":252,"line":269},[250,32995,1181],{"class":786},[250,32997,5401],{"class":778},[250,32999,1187],{"class":786},[250,33001,1190],{"class":912},[250,33003,33004,33006,33008,33010,33012,33014,33016,33018,33020,33022,33024],{"class":252,"line":275},[250,33005,1195],{"class":912},[250,33007,5412],{"class":782},[250,33009,1201],{"class":912},[250,33011,1204],{"class":782},[250,33013,5419],{"class":912},[250,33015,5422],{"class":782},[250,33017,1207],{"class":912},[250,33019,1210],{"class":778},[250,33021,1213],{"class":912},[250,33023,1216],{"class":782},[250,33025,1219],{"class":912},[250,33027,33028,33030,33032,33034,33036,33038,33040,33042,33044,33046,33048],{"class":252,"line":281},[250,33029,1195],{"class":912},[250,33031,5439],{"class":782},[250,33033,1201],{"class":912},[250,33035,1231],{"class":782},[250,33037,5419],{"class":912},[250,33039,5448],{"class":782},[250,33041,1207],{"class":912},[250,33043,1236],{"class":778},[250,33045,1213],{"class":912},[250,33047,1216],{"class":782},[250,33049,1219],{"class":912},[250,33051,33052,33054,33056,33058,33060,33062,33064,33066,33068,33070,33072],{"class":252,"line":287},[250,33053,1195],{"class":912},[250,33055,5465],{"class":782},[250,33057,1201],{"class":912},[250,33059,5470],{"class":782},[250,33061,5419],{"class":912},[250,33063,5475],{"class":782},[250,33065,1207],{"class":912},[250,33067,1259],{"class":778},[250,33069,1213],{"class":912},[250,33071,1216],{"class":782},[250,33073,1219],{"class":912},[250,33075,33076,33078,33080,33082,33084,33086,33088,33090,33092,33094,33096],{"class":252,"line":293},[250,33077,1195],{"class":912},[250,33079,5492],{"class":782},[250,33081,1201],{"class":912},[250,33083,5497],{"class":782},[250,33085,5419],{"class":912},[250,33087,5502],{"class":782},[250,33089,1207],{"class":912},[250,33091,1210],{"class":778},[250,33093,1213],{"class":912},[250,33095,1216],{"class":782},[250,33097,1219],{"class":912},[250,33099,33100,33102,33104,33106,33108,33110,33112,33114,33116,33118,33120],{"class":252,"line":299},[250,33101,1195],{"class":912},[250,33103,5519],{"class":782},[250,33105,1201],{"class":912},[250,33107,1278],{"class":782},[250,33109,5419],{"class":912},[250,33111,5528],{"class":782},[250,33113,1207],{"class":912},[250,33115,1283],{"class":778},[250,33117,1213],{"class":912},[250,33119,1288],{"class":782},[250,33121,1219],{"class":912},[250,33123,33124,33126,33128,33130,33132,33134,33136,33138,33140,33142,33144],{"class":252,"line":132},[250,33125,1195],{"class":912},[250,33127,5545],{"class":782},[250,33129,1201],{"class":912},[250,33131,5550],{"class":782},[250,33133,5419],{"class":912},[250,33135,5555],{"class":782},[250,33137,1207],{"class":912},[250,33139,1259],{"class":778},[250,33141,1213],{"class":912},[250,33143,1288],{"class":782},[250,33145,1219],{"class":912},[250,33147,33148,33150,33152,33154,33156,33158,33160,33162,33164,33166,33168],{"class":252,"line":310},[250,33149,1195],{"class":912},[250,33151,5572],{"class":782},[250,33153,1201],{"class":912},[250,33155,1254],{"class":782},[250,33157,5419],{"class":912},[250,33159,5581],{"class":782},[250,33161,1207],{"class":912},[250,33163,1259],{"class":778},[250,33165,1213],{"class":912},[250,33167,1264],{"class":782},[250,33169,1219],{"class":912},[250,33171,33172,33174,33176,33178,33180,33182,33184,33186,33188,33190,33192],{"class":252,"line":316},[250,33173,1195],{"class":912},[250,33175,5598],{"class":782},[250,33177,1201],{"class":912},[250,33179,5603],{"class":782},[250,33181,5419],{"class":912},[250,33183,5608],{"class":782},[250,33185,1207],{"class":912},[250,33187,1236],{"class":778},[250,33189,1213],{"class":912},[250,33191,1264],{"class":782},[250,33193,1219],{"class":912},[250,33195,33196,33198,33200,33202,33204,33206,33208,33210,33212,33214,33216],{"class":252,"line":322},[250,33197,1195],{"class":912},[250,33199,5625],{"class":782},[250,33201,1201],{"class":912},[250,33203,5630],{"class":782},[250,33205,5419],{"class":912},[250,33207,5635],{"class":782},[250,33209,1207],{"class":912},[250,33211,1283],{"class":778},[250,33213,1213],{"class":912},[250,33215,1264],{"class":782},[250,33217,1219],{"class":912},[250,33219,33220],{"class":252,"line":328},[250,33221,1317],{"class":912},[250,33223,33224],{"class":252,"line":334},[250,33225,795],{"emptyLinePlaceholder":129},[250,33227,33228,33230,33232,33234,33236,33238,33240,33242],{"class":252,"line":340},[250,33229,1019],{"class":786},[250,33231,1022],{"class":786},[250,33233,1109],{"class":774},[250,33235,1434],{"class":912},[250,33237,1437],{"class":786},[250,33239,2015],{"class":912},[250,33241,1115],{"class":786},[250,33243,1118],{"class":912},[250,33245,33246],{"class":252,"line":346},[250,33247,5676],{"class":768},[250,33249,33250,33252,33254,33256,33258,33260],{"class":252,"line":352},[250,33251,1565],{"class":786},[250,33253,5683],{"class":912},[250,33255,5686],{"class":774},[250,33257,5689],{"class":912},[250,33259,5692],{"class":774},[250,33261,1906],{"class":912},[250,33263,33264],{"class":252,"line":358},[250,33265,1053],{"class":912},[250,33267,33268],{"class":252,"line":364},[250,33269,5703],{"class":768},[250,33271,33272,33274,33276,33278,33280,33282],{"class":252,"line":370},[250,33273,1944],{"class":786},[250,33275,1440],{"class":912},[250,33277,1181],{"class":786},[250,33279,5714],{"class":778},[250,33281,5717],{"class":786},[250,33283,5720],{"class":912},[250,33285,33286,33288,33290,33292,33294,33296],{"class":252,"line":376},[250,33287,5725],{"class":786},[250,33289,5683],{"class":912},[250,33291,5730],{"class":774},[250,33293,5689],{"class":912},[250,33295,5735],{"class":774},[250,33297,1028],{"class":912},[250,33299,33300,33302],{"class":252,"line":382},[250,33301,5742],{"class":786},[250,33303,5745],{"class":912},[250,33305,33306,33308,33310],{"class":252,"line":388},[250,33307,5750],{"class":912},[250,33309,1066],{"class":778},[250,33311,927],{"class":912},[250,33313,33314],{"class":252,"line":393},[250,33315,1547],{"class":912},[250,33317,33318],{"class":252,"line":399},[250,33319,986],{"class":912},[250,33321,33322],{"class":252,"line":405},[250,33323,1053],{"class":912},[250,33325,33326,33328,33330,33332,33334,33336],{"class":252,"line":410},[250,33327,1123],{"class":786},[250,33329,5773],{"class":912},[250,33331,5776],{"class":782},[250,33333,5779],{"class":912},[250,33335,1503],{"class":778},[250,33337,5784],{"class":912},[250,33339,33340],{"class":252,"line":415},[250,33341,1077],{"class":912},[72,33343],{},[31,33345,5794],{"id":5793},[2459,33347,5798],{"id":5797},[20,33349,1092,33350,1007],{},[39,33351,5803],{},[47,33353,33354],{"className":1010,"code":5806,"filename":5803,"language":1012,"meta":55,"style":55},[39,33355,33356,33368,33380,33384,33402,33426,33432],{"__ignoreMap":55},[250,33357,33358,33360,33362,33364,33366],{"class":252,"line":253},[250,33359,1763],{"class":786},[250,33361,5369],{"class":912},[250,33363,1769],{"class":786},[250,33365,5374],{"class":782},[250,33367,1379],{"class":912},[250,33369,33370,33372,33374,33376,33378],{"class":252,"line":113},[250,33371,1763],{"class":786},[250,33373,5383],{"class":912},[250,33375,1769],{"class":786},[250,33377,5388],{"class":782},[250,33379,1379],{"class":912},[250,33381,33382],{"class":252,"line":110},[250,33383,795],{"emptyLinePlaceholder":129},[250,33385,33386,33388,33390,33392,33394,33396,33398,33400],{"class":252,"line":269},[250,33387,1019],{"class":786},[250,33389,1022],{"class":786},[250,33391,1109],{"class":774},[250,33393,1434],{"class":912},[250,33395,1437],{"class":786},[250,33397,2015],{"class":912},[250,33399,1115],{"class":786},[250,33401,1118],{"class":912},[250,33403,33404,33406,33408,33410,33412,33414,33416,33418,33420,33422,33424],{"class":252,"line":275},[250,33405,1455],{"class":786},[250,33407,5861],{"class":778},[250,33409,1187],{"class":786},[250,33411,1463],{"class":786},[250,33413,5683],{"class":912},[250,33415,5870],{"class":774},[250,33417,1647],{"class":912},[250,33419,1769],{"class":774},[250,33421,5689],{"class":912},[250,33423,5879],{"class":774},[250,33425,5882],{"class":912},[250,33427,33428,33430],{"class":252,"line":281},[250,33429,1123],{"class":786},[250,33431,5889],{"class":912},[250,33433,33434],{"class":252,"line":287},[250,33435,1077],{"class":912},[2459,33437,5897],{"id":5896},[20,33439,1092,33440,1007],{},[39,33441,5902],{},[47,33443,33444],{"className":1010,"code":5905,"filename":5902,"language":1012,"meta":55,"style":55},[39,33445,33446,33458,33470,33474,33496,33512,33516,33526,33534,33542,33550,33554,33558,33562,33594,33598,33608,33616,33624,33632,33636,33640,33644,33650],{"__ignoreMap":55},[250,33447,33448,33450,33452,33454,33456],{"class":252,"line":253},[250,33449,1763],{"class":786},[250,33451,5369],{"class":912},[250,33453,1769],{"class":786},[250,33455,5374],{"class":782},[250,33457,1379],{"class":912},[250,33459,33460,33462,33464,33466,33468],{"class":252,"line":113},[250,33461,1763],{"class":786},[250,33463,5383],{"class":912},[250,33465,1769],{"class":786},[250,33467,5388],{"class":782},[250,33469,1379],{"class":912},[250,33471,33472],{"class":252,"line":110},[250,33473,795],{"emptyLinePlaceholder":129},[250,33475,33476,33478,33480,33482,33484,33486,33488,33490,33492,33494],{"class":252,"line":269},[250,33477,1019],{"class":786},[250,33479,1022],{"class":786},[250,33481,1109],{"class":774},[250,33483,1434],{"class":912},[250,33485,1437],{"class":786},[250,33487,1440],{"class":912},[250,33489,1443],{"class":1370},[250,33491,1446],{"class":912},[250,33493,1115],{"class":786},[250,33495,1118],{"class":912},[250,33497,33498,33500,33502,33504,33506,33508,33510],{"class":252,"line":275},[250,33499,1455],{"class":786},[250,33501,5964],{"class":778},[250,33503,1187],{"class":786},[250,33505,5969],{"class":774},[250,33507,5972],{"class":912},[250,33509,4466],{"class":782},[250,33511,1885],{"class":912},[250,33513,33514],{"class":252,"line":281},[250,33515,1053],{"class":912},[250,33517,33518,33520,33522,33524],{"class":252,"line":287},[250,33519,1486],{"class":786},[250,33521,1440],{"class":912},[250,33523,1491],{"class":786},[250,33525,5991],{"class":912},[250,33527,33528,33530,33532],{"class":252,"line":293},[250,33529,1517],{"class":786},[250,33531,1520],{"class":774},[250,33533,1028],{"class":912},[250,33535,33536,33538,33540],{"class":252,"line":299},[250,33537,1527],{"class":912},[250,33539,1530],{"class":778},[250,33541,927],{"class":912},[250,33543,33544,33546,33548],{"class":252,"line":132},[250,33545,1537],{"class":912},[250,33547,6014],{"class":782},[250,33549,927],{"class":912},[250,33551,33552],{"class":252,"line":310},[250,33553,1547],{"class":912},[250,33555,33556],{"class":252,"line":316},[250,33557,986],{"class":912},[250,33559,33560],{"class":252,"line":322},[250,33561,1053],{"class":912},[250,33563,33564,33566,33568,33570,33572,33574,33576,33578,33580,33582,33584,33586,33588,33590,33592],{"class":252,"line":328},[250,33565,1455],{"class":786},[250,33567,5714],{"class":778},[250,33569,1187],{"class":786},[250,33571,1463],{"class":786},[250,33573,5683],{"class":912},[250,33575,5870],{"class":774},[250,33577,1647],{"class":912},[250,33579,1769],{"class":774},[250,33581,5689],{"class":912},[250,33583,5879],{"class":774},[250,33585,6053],{"class":912},[250,33587,6056],{"class":774},[250,33589,6059],{"class":912},[250,33591,6062],{"class":774},[250,33593,1906],{"class":912},[250,33595,33596],{"class":252,"line":334},[250,33597,1053],{"class":912},[250,33599,33600,33602,33604,33606],{"class":252,"line":340},[250,33601,1486],{"class":786},[250,33603,1440],{"class":912},[250,33605,1491],{"class":786},[250,33607,6079],{"class":912},[250,33609,33610,33612,33614],{"class":252,"line":346},[250,33611,1517],{"class":786},[250,33613,1520],{"class":774},[250,33615,1028],{"class":912},[250,33617,33618,33620,33622],{"class":252,"line":352},[250,33619,1527],{"class":912},[250,33621,6094],{"class":778},[250,33623,927],{"class":912},[250,33625,33626,33628,33630],{"class":252,"line":358},[250,33627,1537],{"class":912},[250,33629,6103],{"class":782},[250,33631,927],{"class":912},[250,33633,33634],{"class":252,"line":364},[250,33635,1547],{"class":912},[250,33637,33638],{"class":252,"line":370},[250,33639,986],{"class":912},[250,33641,33642],{"class":252,"line":376},[250,33643,1053],{"class":912},[250,33645,33646,33648],{"class":252,"line":382},[250,33647,1123],{"class":786},[250,33649,6124],{"class":912},[250,33651,33652],{"class":252,"line":388},[250,33653,1077],{"class":912},[2459,33655,6132],{"id":6131},[20,33657,6135],{},[20,33659,1092,33660,1007],{},[39,33661,1353],{},[47,33663,33664],{"className":1010,"code":6142,"filename":1353,"language":1012,"meta":55,"style":55},[39,33665,33666,33678,33690,33702,33706,33714,33724,33734,33738,33742,33764,33778,33782,33786,33818,33826,33834,33842,33846,33850,33854,33858,33870,33886,33890,33904,33916,33924,33932,33944,33952,33956,33966,33974,33982,33998,34002,34006,34010,34020,34028,34036,34052,34056,34060,34064,34076,34084,34088,34092,34096,34100,34104,34108,34122,34136,34140,34154,34158,34168,34176,34180,34190,34200,34204,34208,34212,34226,34238,34246,34254,34266,34274,34278,34292,34300,34304,34308,34312,34320,34324,34328,34332,34336,34348,34356,34364,34376,34384,34388,34400,34408,34416,34428,34432,34438,34444,34448,34452],{"__ignoreMap":55},[250,33667,33668,33670,33672,33674,33676],{"class":252,"line":253},[250,33669,1763],{"class":786},[250,33671,5369],{"class":912},[250,33673,1769],{"class":786},[250,33675,5374],{"class":782},[250,33677,1379],{"class":912},[250,33679,33680,33682,33684,33686,33688],{"class":252,"line":113},[250,33681,1763],{"class":786},[250,33683,6163],{"class":912},[250,33685,1769],{"class":786},[250,33687,5388],{"class":782},[250,33689,1379],{"class":912},[250,33691,33692,33694,33696,33698,33700],{"class":252,"line":110},[250,33693,1763],{"class":786},[250,33695,6176],{"class":912},[250,33697,1769],{"class":786},[250,33699,4420],{"class":782},[250,33701,1379],{"class":912},[250,33703,33704],{"class":252,"line":269},[250,33705,795],{"emptyLinePlaceholder":129},[250,33707,33708,33710,33712],{"class":252,"line":275},[250,33709,1360],{"class":786},[250,33711,6193],{"class":774},[250,33713,1118],{"class":912},[250,33715,33716,33718,33720,33722],{"class":252,"line":281},[250,33717,6200],{"class":1370},[250,33719,1007],{"class":786},[250,33721,2506],{"class":778},[250,33723,1379],{"class":912},[250,33725,33726,33728,33730,33732],{"class":252,"line":287},[250,33727,1384],{"class":1370},[250,33729,1007],{"class":786},[250,33731,1376],{"class":778},[250,33733,1379],{"class":912},[250,33735,33736],{"class":252,"line":293},[250,33737,991],{"class":912},[250,33739,33740],{"class":252,"line":299},[250,33741,795],{"emptyLinePlaceholder":129},[250,33743,33744,33746,33748,33750,33752,33754,33756,33758,33760,33762],{"class":252,"line":132},[250,33745,1019],{"class":786},[250,33747,1022],{"class":786},[250,33749,1109],{"class":774},[250,33751,1434],{"class":912},[250,33753,1437],{"class":786},[250,33755,1440],{"class":912},[250,33757,1443],{"class":1370},[250,33759,1446],{"class":912},[250,33761,1115],{"class":786},[250,33763,1118],{"class":912},[250,33765,33766,33768,33770,33772,33774,33776],{"class":252,"line":310},[250,33767,1455],{"class":786},[250,33769,1458],{"class":778},[250,33771,1187],{"class":786},[250,33773,1463],{"class":786},[250,33775,1466],{"class":774},[250,33777,6261],{"class":912},[250,33779,33780],{"class":252,"line":316},[250,33781,1053],{"class":912},[250,33783,33784],{"class":252,"line":322},[250,33785,6270],{"class":768},[250,33787,33788,33790,33792,33794,33796,33798,33800,33802,33804,33806,33808,33810,33812,33814,33816],{"class":252,"line":328},[250,33789,1486],{"class":786},[250,33791,1440],{"class":912},[250,33793,1491],{"class":786},[250,33795,6281],{"class":912},[250,33797,1497],{"class":786},[250,33799,6286],{"class":786},[250,33801,6289],{"class":912},[250,33803,6292],{"class":774},[250,33805,6295],{"class":912},[250,33807,1497],{"class":786},[250,33809,6300],{"class":912},[250,33811,1503],{"class":778},[250,33813,1506],{"class":786},[250,33815,1509],{"class":778},[250,33817,1512],{"class":912},[250,33819,33820,33822,33824],{"class":252,"line":334},[250,33821,1517],{"class":786},[250,33823,1520],{"class":774},[250,33825,1028],{"class":912},[250,33827,33828,33830,33832],{"class":252,"line":340},[250,33829,1527],{"class":912},[250,33831,1530],{"class":778},[250,33833,927],{"class":912},[250,33835,33836,33838,33840],{"class":252,"line":346},[250,33837,1537],{"class":912},[250,33839,1540],{"class":782},[250,33841,927],{"class":912},[250,33843,33844],{"class":252,"line":352},[250,33845,1547],{"class":912},[250,33847,33848],{"class":252,"line":358},[250,33849,986],{"class":912},[250,33851,33852],{"class":252,"line":364},[250,33853,1053],{"class":912},[250,33855,33856],{"class":252,"line":370},[250,33857,6349],{"class":768},[250,33859,33860,33862,33864,33866,33868],{"class":252,"line":376},[250,33861,1911],{"class":786},[250,33863,6356],{"class":912},[250,33865,1416],{"class":786},[250,33867,1509],{"class":778},[250,33869,1379],{"class":912},[250,33871,33872,33874,33876,33878,33880,33882,33884],{"class":252,"line":382},[250,33873,1455],{"class":786},[250,33875,6369],{"class":778},[250,33877,1007],{"class":786},[250,33879,6193],{"class":774},[250,33881,1413],{"class":912},[250,33883,1416],{"class":786},[250,33885,1419],{"class":912},[250,33887,33888],{"class":252,"line":388},[250,33889,1053],{"class":912},[250,33891,33892,33894,33896,33898,33900,33902],{"class":252,"line":393},[250,33893,1944],{"class":786},[250,33895,1440],{"class":912},[250,33897,1181],{"class":786},[250,33899,5714],{"class":778},[250,33901,5717],{"class":786},[250,33903,6398],{"class":912},[250,33905,33906,33908,33910,33912,33914],{"class":252,"line":399},[250,33907,6403],{"class":786},[250,33909,6406],{"class":778},[250,33911,1187],{"class":786},[250,33913,1463],{"class":786},[250,33915,6413],{"class":912},[250,33917,33918,33920,33922],{"class":252,"line":405},[250,33919,6418],{"class":912},[250,33921,5870],{"class":774},[250,33923,4861],{"class":912},[250,33925,33926,33928,33930],{"class":252,"line":410},[250,33927,6418],{"class":912},[250,33929,1769],{"class":774},[250,33931,6431],{"class":912},[250,33933,33934,33936,33938,33940,33942],{"class":252,"line":415},[250,33935,6418],{"class":912},[250,33937,5879],{"class":774},[250,33939,1434],{"class":912},[250,33941,6442],{"class":774},[250,33943,6445],{"class":912},[250,33945,33946,33948,33950],{"class":252,"line":420},[250,33947,6418],{"class":912},[250,33949,6062],{"class":774},[250,33951,1906],{"class":912},[250,33953,33954],{"class":252,"line":426},[250,33955,6458],{"class":912},[250,33957,33958,33960,33962,33964],{"class":252,"line":431},[250,33959,6463],{"class":786},[250,33961,1440],{"class":912},[250,33963,1491],{"class":786},[250,33965,6470],{"class":912},[250,33967,33968,33970,33972],{"class":252,"line":436},[250,33969,6475],{"class":786},[250,33971,1520],{"class":774},[250,33973,1028],{"class":912},[250,33975,33976,33978,33980],{"class":252,"line":442},[250,33977,6484],{"class":912},[250,33979,1530],{"class":778},[250,33981,927],{"class":912},[250,33983,33984,33986,33988,33990,33992,33994,33996],{"class":252,"line":447},[250,33985,6493],{"class":912},[250,33987,6496],{"class":782},[250,33989,6499],{"class":912},[250,33991,2230],{"class":782},[250,33993,6504],{"class":912},[250,33995,6507],{"class":782},[250,33997,927],{"class":912},[250,33999,34000],{"class":252,"line":453},[250,34001,6514],{"class":912},[250,34003,34004],{"class":252,"line":459},[250,34005,3684],{"class":912},[250,34007,34008],{"class":252,"line":465},[250,34009,6458],{"class":912},[250,34011,34012,34014,34016,34018],{"class":252,"line":471},[250,34013,6463],{"class":786},[250,34015,1440],{"class":912},[250,34017,1491],{"class":786},[250,34019,6533],{"class":912},[250,34021,34022,34024,34026],{"class":252,"line":2201},[250,34023,6475],{"class":786},[250,34025,1520],{"class":774},[250,34027,1028],{"class":912},[250,34029,34030,34032,34034],{"class":252,"line":2207},[250,34031,6484],{"class":912},[250,34033,1530],{"class":778},[250,34035,927],{"class":912},[250,34037,34038,34040,34042,34044,34046,34048,34050],{"class":252,"line":2213},[250,34039,6493],{"class":912},[250,34041,6496],{"class":782},[250,34043,6558],{"class":912},[250,34045,2230],{"class":782},[250,34047,6563],{"class":912},[250,34049,6566],{"class":782},[250,34051,927],{"class":912},[250,34053,34054],{"class":252,"line":2218},[250,34055,6514],{"class":912},[250,34057,34058],{"class":252,"line":2223},[250,34059,3684],{"class":912},[250,34061,34062],{"class":252,"line":2239},[250,34063,6458],{"class":912},[250,34065,34066,34068,34070,34072,34074],{"class":252,"line":2244},[250,34067,6585],{"class":912},[250,34069,6588],{"class":786},[250,34071,6591],{"class":912},[250,34073,6594],{"class":786},[250,34075,6597],{"class":912},[250,34077,34078,34080,34082],{"class":252,"line":2267},[250,34079,6602],{"class":912},[250,34081,1668],{"class":774},[250,34083,1028],{"class":912},[250,34085,34086],{"class":252,"line":2301},[250,34087,6611],{"class":912},[250,34089,34090],{"class":252,"line":2306},[250,34091,6616],{"class":912},[250,34093,34094],{"class":252,"line":2320},[250,34095,1547],{"class":912},[250,34097,34098],{"class":252,"line":2340},[250,34099,986],{"class":912},[250,34101,34102],{"class":252,"line":2360},[250,34103,1053],{"class":912},[250,34105,34106],{"class":252,"line":2397},[250,34107,6633],{"class":768},[250,34109,34110,34112,34114,34116,34118,34120],{"class":252,"line":2402},[250,34111,1455],{"class":786},[250,34113,6640],{"class":778},[250,34115,1187],{"class":786},[250,34117,6645],{"class":912},[250,34119,1616],{"class":774},[250,34121,1906],{"class":912},[250,34123,34124,34126,34128,34130,34132,34134],{"class":252,"line":2407},[250,34125,1455],{"class":786},[250,34127,6656],{"class":778},[250,34129,1187],{"class":786},[250,34131,1901],{"class":912},[250,34133,1153],{"class":774},[250,34135,1906],{"class":912},[250,34137,34138],{"class":252,"line":6667},[250,34139,1053],{"class":912},[250,34141,34142,34144,34146,34148,34150,34152],{"class":252,"line":6672},[250,34143,1565],{"class":786},[250,34145,5683],{"class":912},[250,34147,5730],{"class":774},[250,34149,6681],{"class":912},[250,34151,5735],{"class":774},[250,34153,1028],{"class":912},[250,34155,34156],{"class":252,"line":6688},[250,34157,6691],{"class":912},[250,34159,34160,34162,34164,34166],{"class":252,"line":6694},[250,34161,6697],{"class":912},[250,34163,1497],{"class":786},[250,34165,6702],{"class":782},[250,34167,927],{"class":912},[250,34169,34170,34172,34174],{"class":252,"line":6707},[250,34171,1628],{"class":912},[250,34173,1631],{"class":782},[250,34175,927],{"class":912},[250,34177,34178],{"class":252,"line":6716},[250,34179,6719],{"class":912},[250,34181,34182,34184,34186,34188],{"class":252,"line":6722},[250,34183,1638],{"class":912},[250,34185,1641],{"class":786},[250,34187,1644],{"class":774},[250,34189,6731],{"class":912},[250,34191,34192,34194,34196,34198],{"class":252,"line":6734},[250,34193,6737],{"class":912},[250,34195,1641],{"class":786},[250,34197,1644],{"class":774},[250,34199,6731],{"class":912},[250,34201,34202],{"class":252,"line":6746},[250,34203,6749],{"class":912},[250,34205,34206],{"class":252,"line":6752},[250,34207,1053],{"class":912},[250,34209,34210],{"class":252,"line":6757},[250,34211,6760],{"class":768},[250,34213,34214,34216,34218,34220,34222,34224],{"class":252,"line":6763},[250,34215,1944],{"class":786},[250,34217,1440],{"class":912},[250,34219,1181],{"class":786},[250,34221,6772],{"class":778},[250,34223,5717],{"class":786},[250,34225,6777],{"class":912},[250,34227,34228,34230,34232,34234,34236],{"class":252,"line":6780},[250,34229,6403],{"class":786},[250,34231,6406],{"class":778},[250,34233,1187],{"class":786},[250,34235,1463],{"class":786},[250,34237,6413],{"class":912},[250,34239,34240,34242,34244],{"class":252,"line":6793},[250,34241,6418],{"class":912},[250,34243,5870],{"class":774},[250,34245,4861],{"class":912},[250,34247,34248,34250,34252],{"class":252,"line":6802},[250,34249,6418],{"class":912},[250,34251,1769],{"class":774},[250,34253,6431],{"class":912},[250,34255,34256,34258,34260,34262,34264],{"class":252,"line":6811},[250,34257,6418],{"class":912},[250,34259,5879],{"class":774},[250,34261,1434],{"class":912},[250,34263,6442],{"class":774},[250,34265,6822],{"class":912},[250,34267,34268,34270,34272],{"class":252,"line":6825},[250,34269,6418],{"class":912},[250,34271,6062],{"class":774},[250,34273,1906],{"class":912},[250,34275,34276],{"class":252,"line":6834},[250,34277,6458],{"class":912},[250,34279,34280,34282,34284,34286,34288,34290],{"class":252,"line":6839},[250,34281,5725],{"class":786},[250,34283,5683],{"class":912},[250,34285,5730],{"class":774},[250,34287,6848],{"class":912},[250,34289,5735],{"class":774},[250,34291,1028],{"class":912},[250,34293,34294,34296,34298],{"class":252,"line":6855},[250,34295,6858],{"class":912},[250,34297,1616],{"class":774},[250,34299,1156],{"class":912},[250,34301,34302],{"class":252,"line":6865},[250,34303,6868],{"class":912},[250,34305,34306],{"class":252,"line":6871},[250,34307,6874],{"class":912},[250,34309,34310],{"class":252,"line":6877},[250,34311,6880],{"class":912},[250,34313,34314,34316,34318],{"class":252,"line":6883},[250,34315,6886],{"class":912},[250,34317,1491],{"class":786},[250,34319,6891],{"class":912},[250,34321,34322],{"class":252,"line":6894},[250,34323,1547],{"class":912},[250,34325,34326],{"class":252,"line":6899},[250,34327,986],{"class":912},[250,34329,34330],{"class":252,"line":6904},[250,34331,1053],{"class":912},[250,34333,34334],{"class":252,"line":6909},[250,34335,6912],{"class":768},[250,34337,34338,34340,34342,34344,34346],{"class":252,"line":6915},[250,34339,1455],{"class":786},[250,34341,6920],{"class":778},[250,34343,1187],{"class":786},[250,34345,1463],{"class":786},[250,34347,6413],{"class":912},[250,34349,34350,34352,34354],{"class":252,"line":6929},[250,34351,4604],{"class":912},[250,34353,5870],{"class":774},[250,34355,4861],{"class":912},[250,34357,34358,34360,34362],{"class":252,"line":6938},[250,34359,4604],{"class":912},[250,34361,1769],{"class":774},[250,34363,6945],{"class":912},[250,34365,34366,34368,34370,34372,34374],{"class":252,"line":6948},[250,34367,4604],{"class":912},[250,34369,5879],{"class":774},[250,34371,1434],{"class":912},[250,34373,6442],{"class":774},[250,34375,6959],{"class":912},[250,34377,34378,34380,34382],{"class":252,"line":6962},[250,34379,4604],{"class":912},[250,34381,6062],{"class":774},[250,34383,1906],{"class":912},[250,34385,34386],{"class":252,"line":6971},[250,34387,1053],{"class":912},[250,34389,34390,34392,34394,34396,34398],{"class":252,"line":6976},[250,34391,1455],{"class":786},[250,34393,5861],{"class":778},[250,34395,1187],{"class":786},[250,34397,1463],{"class":786},[250,34399,6413],{"class":912},[250,34401,34402,34404,34406],{"class":252,"line":6989},[250,34403,4604],{"class":912},[250,34405,5870],{"class":774},[250,34407,4861],{"class":912},[250,34409,34410,34412,34414],{"class":252,"line":6998},[250,34411,4604],{"class":912},[250,34413,1769],{"class":774},[250,34415,7005],{"class":912},[250,34417,34418,34420,34422,34424,34426],{"class":252,"line":7008},[250,34419,4604],{"class":912},[250,34421,5879],{"class":774},[250,34423,1434],{"class":912},[250,34425,6442],{"class":774},[250,34427,7019],{"class":912},[250,34429,34430],{"class":252,"line":7022},[250,34431,1053],{"class":912},[250,34433,34434,34436],{"class":252,"line":7027},[250,34435,1123],{"class":786},[250,34437,1118],{"class":912},[250,34439,34440,34442],{"class":252,"line":7034},[250,34441,7037],{"class":786},[250,34443,7040],{"class":912},[250,34445,34446],{"class":252,"line":7043},[250,34447,7046],{"class":912},[250,34449,34450],{"class":252,"line":7049},[250,34451,1161],{"class":912},[250,34453,34454],{"class":252,"line":7054},[250,34455,1077],{"class":912},[2459,34457,7060],{"id":7059},[20,34459,1092,34460,1007],{},[39,34461,7065],{},[47,34463,34464],{"className":1010,"code":7068,"filename":7065,"language":1012,"meta":55,"style":55},[39,34465,34466,34478,34490,34502,34506,34536,34540,34562,34578,34592,34596,34606,34614,34622,34630,34634,34638,34642,34662,34670,34678,34700,34704,34708,34712,34724,34732,34740,34752,34760,34764,34774,34782,34790,34798,34802,34806,34810,34814,34820,34828,34836,34840,34850,34854,34866,34870,34882,34890,34898,34910,34918,34922,34928],{"__ignoreMap":55},[250,34467,34468,34470,34472,34474,34476],{"class":252,"line":253},[250,34469,1763],{"class":786},[250,34471,5369],{"class":912},[250,34473,1769],{"class":786},[250,34475,5374],{"class":782},[250,34477,1379],{"class":912},[250,34479,34480,34482,34484,34486,34488],{"class":252,"line":113},[250,34481,1763],{"class":786},[250,34483,7089],{"class":912},[250,34485,1769],{"class":786},[250,34487,5388],{"class":782},[250,34489,1379],{"class":912},[250,34491,34492,34494,34496,34498,34500],{"class":252,"line":110},[250,34493,1763],{"class":786},[250,34495,6176],{"class":912},[250,34497,1769],{"class":786},[250,34499,4420],{"class":782},[250,34501,1379],{"class":912},[250,34503,34504],{"class":252,"line":269},[250,34505,795],{"emptyLinePlaceholder":129},[250,34507,34508,34510,34512,34514,34516,34518,34520,34522,34524,34526,34528,34530,34532,34534],{"class":252,"line":275},[250,34509,1181],{"class":786},[250,34511,7118],{"class":778},[250,34513,1187],{"class":786},[250,34515,7123],{"class":912},[250,34517,1631],{"class":782},[250,34519,7128],{"class":912},[250,34521,7131],{"class":782},[250,34523,7128],{"class":912},[250,34525,7136],{"class":782},[250,34527,7128],{"class":912},[250,34529,7141],{"class":782},[250,34531,7128],{"class":912},[250,34533,7146],{"class":782},[250,34535,1317],{"class":912},[250,34537,34538],{"class":252,"line":281},[250,34539,795],{"emptyLinePlaceholder":129},[250,34541,34542,34544,34546,34548,34550,34552,34554,34556,34558,34560],{"class":252,"line":287},[250,34543,1019],{"class":786},[250,34545,1022],{"class":786},[250,34547,1109],{"class":774},[250,34549,1434],{"class":912},[250,34551,1437],{"class":786},[250,34553,1440],{"class":912},[250,34555,1443],{"class":1370},[250,34557,1446],{"class":912},[250,34559,1115],{"class":786},[250,34561,1118],{"class":912},[250,34563,34564,34566,34568,34570,34572,34574,34576],{"class":252,"line":293},[250,34565,1455],{"class":786},[250,34567,5964],{"class":778},[250,34569,1187],{"class":786},[250,34571,5969],{"class":774},[250,34573,5972],{"class":912},[250,34575,4466],{"class":782},[250,34577,1885],{"class":912},[250,34579,34580,34582,34584,34586,34588,34590],{"class":252,"line":299},[250,34581,1455],{"class":786},[250,34583,1458],{"class":778},[250,34585,1187],{"class":786},[250,34587,1463],{"class":786},[250,34589,1466],{"class":774},[250,34591,6261],{"class":912},[250,34593,34594],{"class":252,"line":132},[250,34595,1053],{"class":912},[250,34597,34598,34600,34602,34604],{"class":252,"line":310},[250,34599,1486],{"class":786},[250,34601,1440],{"class":912},[250,34603,1491],{"class":786},[250,34605,5991],{"class":912},[250,34607,34608,34610,34612],{"class":252,"line":316},[250,34609,1517],{"class":786},[250,34611,1520],{"class":774},[250,34613,1028],{"class":912},[250,34615,34616,34618,34620],{"class":252,"line":322},[250,34617,1527],{"class":912},[250,34619,1530],{"class":778},[250,34621,927],{"class":912},[250,34623,34624,34626,34628],{"class":252,"line":328},[250,34625,1537],{"class":912},[250,34627,7241],{"class":782},[250,34629,927],{"class":912},[250,34631,34632],{"class":252,"line":334},[250,34633,1547],{"class":912},[250,34635,34636],{"class":252,"line":340},[250,34637,986],{"class":912},[250,34639,34640],{"class":252,"line":346},[250,34641,1053],{"class":912},[250,34643,34644,34646,34648,34650,34652,34654,34656,34658,34660],{"class":252,"line":352},[250,34645,1486],{"class":786},[250,34647,1440],{"class":912},[250,34649,1491],{"class":786},[250,34651,7266],{"class":912},[250,34653,1497],{"class":786},[250,34655,6286],{"class":786},[250,34657,7273],{"class":912},[250,34659,7276],{"class":774},[250,34661,7279],{"class":912},[250,34663,34664,34666,34668],{"class":252,"line":358},[250,34665,1517],{"class":786},[250,34667,1520],{"class":774},[250,34669,1028],{"class":912},[250,34671,34672,34674,34676],{"class":252,"line":364},[250,34673,1527],{"class":912},[250,34675,1530],{"class":778},[250,34677,927],{"class":912},[250,34679,34680,34682,34684,34686,34688,34690,34692,34694,34696,34698],{"class":252,"line":370},[250,34681,1537],{"class":912},[250,34683,7302],{"class":782},[250,34685,7305],{"class":912},[250,34687,2230],{"class":782},[250,34689,7310],{"class":774},[250,34691,1434],{"class":782},[250,34693,7315],{"class":782},[250,34695,2390],{"class":782},[250,34697,2355],{"class":782},[250,34699,927],{"class":912},[250,34701,34702],{"class":252,"line":376},[250,34703,1547],{"class":912},[250,34705,34706],{"class":252,"line":382},[250,34707,986],{"class":912},[250,34709,34710],{"class":252,"line":388},[250,34711,1053],{"class":912},[250,34713,34714,34716,34718,34720,34722],{"class":252,"line":393},[250,34715,1455],{"class":786},[250,34717,7340],{"class":778},[250,34719,1187],{"class":786},[250,34721,1463],{"class":786},[250,34723,6413],{"class":912},[250,34725,34726,34728,34730],{"class":252,"line":399},[250,34727,4604],{"class":912},[250,34729,5870],{"class":774},[250,34731,4861],{"class":912},[250,34733,34734,34736,34738],{"class":252,"line":405},[250,34735,4604],{"class":912},[250,34737,1769],{"class":774},[250,34739,6945],{"class":912},[250,34741,34742,34744,34746,34748,34750],{"class":252,"line":410},[250,34743,4604],{"class":912},[250,34745,5879],{"class":774},[250,34747,1434],{"class":912},[250,34749,6442],{"class":774},[250,34751,7375],{"class":912},[250,34753,34754,34756,34758],{"class":252,"line":415},[250,34755,4604],{"class":912},[250,34757,6062],{"class":774},[250,34759,1906],{"class":912},[250,34761,34762],{"class":252,"line":420},[250,34763,1053],{"class":912},[250,34765,34766,34768,34770,34772],{"class":252,"line":426},[250,34767,1486],{"class":786},[250,34769,1440],{"class":912},[250,34771,1491],{"class":786},[250,34773,7398],{"class":912},[250,34775,34776,34778,34780],{"class":252,"line":431},[250,34777,1517],{"class":786},[250,34779,1520],{"class":774},[250,34781,1028],{"class":912},[250,34783,34784,34786,34788],{"class":252,"line":436},[250,34785,1527],{"class":912},[250,34787,6094],{"class":778},[250,34789,927],{"class":912},[250,34791,34792,34794,34796],{"class":252,"line":442},[250,34793,1537],{"class":912},[250,34795,7421],{"class":782},[250,34797,927],{"class":912},[250,34799,34800],{"class":252,"line":447},[250,34801,1547],{"class":912},[250,34803,34804],{"class":252,"line":453},[250,34805,986],{"class":912},[250,34807,34808],{"class":252,"line":459},[250,34809,1053],{"class":912},[250,34811,34812],{"class":252,"line":465},[250,34813,7440],{"class":768},[250,34815,34816,34818],{"class":252,"line":471},[250,34817,1565],{"class":786},[250,34819,6413],{"class":912},[250,34821,34822,34824,34826],{"class":252,"line":2201},[250,34823,4604],{"class":912},[250,34825,7453],{"class":774},[250,34827,6945],{"class":912},[250,34829,34830,34832,34834],{"class":252,"line":2207},[250,34831,4604],{"class":912},[250,34833,7462],{"class":774},[250,34835,1028],{"class":912},[250,34837,34838],{"class":252,"line":2213},[250,34839,7469],{"class":912},[250,34841,34842,34844,34846,34848],{"class":252,"line":2218},[250,34843,7474],{"class":912},[250,34845,1641],{"class":786},[250,34847,1644],{"class":774},[250,34849,1156],{"class":912},[250,34851,34852],{"class":252,"line":2223},[250,34853,7485],{"class":912},[250,34855,34856,34858,34860,34862,34864],{"class":252,"line":2239},[250,34857,4604],{"class":912},[250,34859,5879],{"class":774},[250,34861,1434],{"class":912},[250,34863,6442],{"class":774},[250,34865,7498],{"class":912},[250,34867,34868],{"class":252,"line":2244},[250,34869,1053],{"class":912},[250,34871,34872,34874,34876,34878,34880],{"class":252,"line":2267},[250,34873,1455],{"class":786},[250,34875,7509],{"class":778},[250,34877,1187],{"class":786},[250,34879,1463],{"class":786},[250,34881,6413],{"class":912},[250,34883,34884,34886,34888],{"class":252,"line":2301},[250,34885,4604],{"class":912},[250,34887,5870],{"class":774},[250,34889,4861],{"class":912},[250,34891,34892,34894,34896],{"class":252,"line":2306},[250,34893,4604],{"class":912},[250,34895,1769],{"class":774},[250,34897,6945],{"class":912},[250,34899,34900,34902,34904,34906,34908],{"class":252,"line":2320},[250,34901,4604],{"class":912},[250,34903,5879],{"class":774},[250,34905,1434],{"class":912},[250,34907,6442],{"class":774},[250,34909,7375],{"class":912},[250,34911,34912,34914,34916],{"class":252,"line":2340},[250,34913,4604],{"class":912},[250,34915,6062],{"class":774},[250,34917,1906],{"class":912},[250,34919,34920],{"class":252,"line":2360},[250,34921,1053],{"class":912},[250,34923,34924,34926],{"class":252,"line":2397},[250,34925,1123],{"class":786},[250,34927,7562],{"class":912},[250,34929,34930],{"class":252,"line":2402},[250,34931,1077],{"class":912},[2459,34933,7570],{"id":7569},[20,34935,1092,34936,1007],{},[39,34937,7575],{},[47,34939,34940],{"className":1010,"code":7578,"filename":7575,"language":1012,"meta":55,"style":55},[39,34941,34942,34954,34966,34970,34988,35000,35008,35016,35024,35028,35032,35050,35070,35082,35090,35098,35110,35120,35124,35128,35132,35138],{"__ignoreMap":55},[250,34943,34944,34946,34948,34950,34952],{"class":252,"line":253},[250,34945,1763],{"class":786},[250,34947,5369],{"class":912},[250,34949,1769],{"class":786},[250,34951,5374],{"class":782},[250,34953,1379],{"class":912},[250,34955,34956,34958,34960,34962,34964],{"class":252,"line":113},[250,34957,1763],{"class":786},[250,34959,7599],{"class":912},[250,34961,1769],{"class":786},[250,34963,5388],{"class":782},[250,34965,1379],{"class":912},[250,34967,34968],{"class":252,"line":110},[250,34969,795],{"emptyLinePlaceholder":129},[250,34971,34972,34974,34976,34978,34980,34982,34984,34986],{"class":252,"line":269},[250,34973,1019],{"class":786},[250,34975,1022],{"class":786},[250,34977,1109],{"class":774},[250,34979,1434],{"class":912},[250,34981,1437],{"class":786},[250,34983,2015],{"class":912},[250,34985,1115],{"class":786},[250,34987,1118],{"class":912},[250,34989,34990,34992,34994,34996,34998],{"class":252,"line":275},[250,34991,1455],{"class":786},[250,34993,7634],{"class":778},[250,34995,1187],{"class":786},[250,34997,1463],{"class":786},[250,34999,6413],{"class":912},[250,35001,35002,35004,35006],{"class":252,"line":281},[250,35003,4604],{"class":912},[250,35005,5870],{"class":774},[250,35007,4861],{"class":912},[250,35009,35010,35012,35014],{"class":252,"line":287},[250,35011,4604],{"class":912},[250,35013,1769],{"class":774},[250,35015,6945],{"class":912},[250,35017,35018,35020,35022],{"class":252,"line":293},[250,35019,4604],{"class":912},[250,35021,7663],{"class":774},[250,35023,7666],{"class":912},[250,35025,35026],{"class":252,"line":299},[250,35027,1053],{"class":912},[250,35029,35030],{"class":252,"line":132},[250,35031,7675],{"class":768},[250,35033,35034,35036,35038,35040,35042,35044,35046,35048],{"class":252,"line":310},[250,35035,1455],{"class":786},[250,35037,7682],{"class":778},[250,35039,1187],{"class":786},[250,35041,1463],{"class":786},[250,35043,1571],{"class":778},[250,35045,2230],{"class":912},[250,35047,2233],{"class":774},[250,35049,1982],{"class":912},[250,35051,35052,35054,35056,35058,35060,35062,35064,35066,35068],{"class":252,"line":316},[250,35053,7699],{"class":912},[250,35055,2820],{"class":774},[250,35057,1434],{"class":912},[250,35059,1437],{"class":786},[250,35061,1440],{"class":912},[250,35063,7710],{"class":1370},[250,35065,1446],{"class":912},[250,35067,1115],{"class":786},[250,35069,1118],{"class":912},[250,35071,35072,35074,35076,35078,35080],{"class":252,"line":322},[250,35073,7721],{"class":786},[250,35075,5861],{"class":778},[250,35077,1187],{"class":786},[250,35079,1463],{"class":786},[250,35081,6413],{"class":912},[250,35083,35084,35086,35088],{"class":252,"line":328},[250,35085,7734],{"class":912},[250,35087,5870],{"class":774},[250,35089,4861],{"class":912},[250,35091,35092,35094,35096],{"class":252,"line":334},[250,35093,7734],{"class":912},[250,35095,1769],{"class":774},[250,35097,7005],{"class":912},[250,35099,35100,35102,35104,35106,35108],{"class":252,"line":340},[250,35101,7734],{"class":912},[250,35103,5879],{"class":774},[250,35105,7755],{"class":912},[250,35107,6056],{"class":774},[250,35109,7760],{"class":912},[250,35111,35112,35114,35116,35118],{"class":252,"line":346},[250,35113,7765],{"class":786},[250,35115,7768],{"class":912},[250,35117,7771],{"class":786},[250,35119,7774],{"class":912},[250,35121,35122],{"class":252,"line":352},[250,35123,7485],{"class":912},[250,35125,35126],{"class":252,"line":358},[250,35127,2859],{"class":912},[250,35129,35130],{"class":252,"line":364},[250,35131,1053],{"class":912},[250,35133,35134,35136],{"class":252,"line":370},[250,35135,1123],{"class":786},[250,35137,7793],{"class":912},[250,35139,35140],{"class":252,"line":376},[250,35141,1077],{"class":912},[72,35143],{},[31,35145,7803],{"id":7802},[20,35147,7806],{},[47,35149,35150],{"className":758,"code":7809,"filename":760,"language":761,"meta":55,"style":55},[39,35151,35152,35156,35164,35168,35172],{"__ignoreMap":55},[250,35153,35154],{"class":252,"line":253},[250,35155,7816],{"class":768},[250,35157,35158,35160,35162],{"class":252,"line":113},[250,35159,4200],{"class":774},[250,35161,4246],{"class":782},[250,35163,7825],{"class":782},[250,35165,35166],{"class":252,"line":110},[250,35167,795],{"emptyLinePlaceholder":129},[250,35169,35170],{"class":252,"line":269},[250,35171,7834],{"class":768},[250,35173,35174,35176,35178],{"class":252,"line":275},[250,35175,4200],{"class":774},[250,35177,4246],{"class":782},[250,35179,7843],{"class":782},[161,35181,35182],{"icon":7846,"title":7847},[20,35183,7850,35184,7854,35186,7858],{},[39,35185,7853],{},[39,35187,7857],{},[72,35189],{},[31,35191,7864],{"id":7863},[20,35193,7867],{},[47,35195,35196],{"className":758,"code":196,"filename":760,"language":761,"meta":55,"style":55},[39,35197,35198],{"__ignoreMap":55},[250,35199,35200,35202,35204],{"class":252,"line":253},[250,35201,4226],{"class":774},[250,35203,1707],{"class":782},[250,35205,1710],{"class":782},[2459,35207,7883],{"id":7882},[47,35209,35210],{"className":758,"code":7886,"language":761,"meta":55,"style":55},[39,35211,35212],{"__ignoreMap":55},[250,35213,35214,35216,35218,35220],{"class":252,"line":253},[250,35215,775],{"class":774},[250,35217,7895],{"class":778},[250,35219,7898],{"class":782},[250,35221,7901],{"class":782},[2459,35223,7905],{"id":7904},[47,35225,35226],{"className":758,"code":7908,"language":761,"meta":55,"style":55},[39,35227,35228],{"__ignoreMap":55},[250,35229,35230,35232],{"class":252,"line":253},[250,35231,775],{"class":774},[250,35233,7917],{"class":782},[2459,35235,7921],{"id":7920},[47,35237,35238],{"className":758,"code":7924,"language":761,"meta":55,"style":55},[39,35239,35240,35252,35260,35266,35270,35274,35278,35282,35286],{"__ignoreMap":55},[250,35241,35242,35244,35246,35248,35250],{"class":252,"line":253},[250,35243,775],{"class":774},[250,35245,7895],{"class":778},[250,35247,7898],{"class":782},[250,35249,7937],{"class":782},[250,35251,7940],{"class":778},[250,35253,35254,35256,35258],{"class":252,"line":113},[250,35255,7945],{"class":778},[250,35257,7948],{"class":782},[250,35259,7940],{"class":778},[250,35261,35262,35264],{"class":252,"line":110},[250,35263,7955],{"class":778},[250,35265,7958],{"class":782},[250,35267,35268],{"class":252,"line":269},[250,35269,7963],{"class":782},[250,35271,35272],{"class":252,"line":275},[250,35273,7968],{"class":782},[250,35275,35276],{"class":252,"line":281},[250,35277,7973],{"class":782},[250,35279,35280],{"class":252,"line":287},[250,35281,7978],{"class":782},[250,35283,35284],{"class":252,"line":293},[250,35285,7983],{"class":782},[250,35287,35288],{"class":252,"line":299},[250,35289,7988],{"class":782},[2459,35291,7992],{"id":7991},[47,35293,35294],{"className":758,"code":7995,"language":761,"meta":55,"style":55},[39,35295,35296,35308,35316],{"__ignoreMap":55},[250,35297,35298,35300,35302,35304,35306],{"class":252,"line":253},[250,35299,775],{"class":774},[250,35301,7895],{"class":778},[250,35303,8006],{"class":782},[250,35305,8009],{"class":782},[250,35307,7940],{"class":778},[250,35309,35310,35312,35314],{"class":252,"line":113},[250,35311,7945],{"class":778},[250,35313,7948],{"class":782},[250,35315,7940],{"class":778},[250,35317,35318,35320],{"class":252,"line":110},[250,35319,7955],{"class":778},[250,35321,8026],{"class":782},[72,35323],{},[31,35325,3256],{"id":3255},[20,35327,3259],{},[561,35329,35330,35332,35334,35336,35338],{},[564,35331,8037],{},[564,35333,8040],{},[564,35335,8043],{},[564,35337,8046],{},[564,35339,8049],{},[2459,35341,3280],{"id":3279},[645,35343,35344,35354],{},[648,35345,35346],{},[651,35347,35348,35350,35352],{},[654,35349,8060],{},[654,35351,3289],{},[654,35353,3292],{},[666,35355,35356,35366,35376,35386,35396,35406],{},[651,35357,35358,35360,35364],{},[671,35359,8071],{},[671,35361,35362],{},[39,35363,8076],{},[671,35365,8079],{},[651,35367,35368,35370,35374],{},[671,35369,8071],{},[671,35371,35372],{},[39,35373,8088],{},[671,35375,8091],{},[651,35377,35378,35380,35384],{},[671,35379,8096],{},[671,35381,35382],{},[39,35383,3343],{},[671,35385,8103],{},[651,35387,35388,35390,35394],{},[671,35389,8071],{},[671,35391,35392],{},[39,35393,3343],{},[671,35395,8114],{},[651,35397,35398,35400,35404],{},[671,35399,8119],{},[671,35401,35402],{},[39,35403,8124],{},[671,35405,8127],{},[651,35407,35408,35410,35414],{},[671,35409,8096],{},[671,35411,35412],{},[39,35413,8136],{},[671,35415,8139],{},[72,35417],{},[15,35419,3352],{"id":3351},[20,35421,8146,35422,8150],{},[546,35423,8149],{},[20,35425,8153],{},[561,35427,35428,35432,35436],{},[564,35429,35430,8161],{},[546,35431,8160],{},[564,35433,35434,8167],{},[546,35435,8166],{},[564,35437,35438,8173],{},[546,35439,8172],{},[20,35441,8176,35442,8180],{},[546,35443,8179],{},[500,35445,8183],{},{"title":55,"searchDepth":110,"depth":110,"links":35447},[35448,35449,35450,35451,35452,35453,35454,35461,35462,35468],{"id":4161,"depth":113,"text":4162},{"id":4181,"depth":113,"text":4182},{"id":4259,"depth":113,"text":4260},{"id":4360,"depth":113,"text":4361},{"id":5045,"depth":113,"text":5046},{"id":5348,"depth":113,"text":5349},{"id":5793,"depth":113,"text":5794,"children":35455},[35456,35457,35458,35459,35460],{"id":5797,"depth":110,"text":5798},{"id":5896,"depth":110,"text":5897},{"id":6131,"depth":110,"text":6132},{"id":7059,"depth":110,"text":7060},{"id":7569,"depth":110,"text":7570},{"id":7802,"depth":113,"text":7803},{"id":7863,"depth":113,"text":7864,"children":35463},[35464,35465,35466,35467],{"id":7882,"depth":110,"text":7883},{"id":7904,"depth":110,"text":7905},{"id":7920,"depth":110,"text":7921},{"id":7991,"depth":110,"text":7992},{"id":3255,"depth":113,"text":3256,"children":35469},[35470],{"id":3279,"depth":110,"text":3280},{"type":12,"value":35472},[35473,35475,35479,35483,35485],[15,35474,541],{"id":540},[20,35476,4089,35477,4093],{},[546,35478,4092],{},[20,35480,4096,35481,4100],{},[546,35482,4099],{},[20,35484,4103],{},[20,35486,4106,35487,4110],{},[546,35488,4109],{},[8229,8230,3504,8231,8232,8233,8234],{},{"title":4081,"description":8209},"drizzle-nitro-api",{"id":8241,"title":8242,"author":35494,"body":35495,"canonical":115,"categories":115,"date":8285,"description":8286,"excerpt":35522,"extension":118,"img":8293,"keywords":35528,"language":8295,"meta":35529,"navigation":129,"ogImage":115,"path":8297,"rating":131,"readTime":275,"seo":35530,"stem":8299,"tag":8300,"__hash__":8301,"slug":35531},{"name":8,"website":9,"img":10},{"type":12,"value":35496,"toc":35517},[35497,35499,35501,35503,35505,35507,35509,35511,35513,35515],[15,35498,8249],{"id":8248},[20,35500,8252],{},[20,35502,8255],{},[20,35504,8258],{},[31,35506,8262],{"id":8261},[20,35508,8265],{},[31,35510,8269],{"id":8268},[20,35512,8272],{},[31,35514,8276],{"id":8275},[20,35516,8279],{},{"title":55,"searchDepth":110,"depth":110,"links":35518},[35519,35520,35521],{"id":8261,"depth":113,"text":8262},{"id":8268,"depth":113,"text":8269},{"id":8275,"depth":113,"text":8276},{"type":12,"value":35523},[35524,35526],[15,35525,8249],{"id":8248},[20,35527,8252],{},[121,122],{},{"title":8242,"description":8286},"first-post",{"id":8303,"title":8304,"author":35533,"body":35534,"canonical":115,"categories":115,"date":9321,"description":9322,"excerpt":36386,"extension":118,"img":9371,"keywords":36434,"language":3510,"meta":36435,"navigation":129,"ogImage":115,"path":9376,"rating":299,"readTime":132,"seo":36436,"stem":9378,"tag":9379,"__hash__":9380,"slug":36437},{"name":8,"img":10,"website":535},{"type":12,"value":35535,"toc":36370},[35536,35538,35548,35552,35564,35568,35578,35582,35584,35586,35590,35592,35602,35604,35612,35614,35616,35618,35628,35632,35634,35636,35668,35670,35675,35677,35679,35681,35685,35689,35853,35855,35857,35859,35863,35913,35915,35920,35922,35926,35928,35930,35934,36006,36008,36010,36012,36014,36018,36072,36074,36114,36116,36118,36120,36124,36252,36256,36258,36260,36262,36266,36296,36298,36300,36302,36304,36316,36318,36332,36334,36336,36340,36352,36354,36356,36360,36366,36368],[15,35537,541],{"id":540},[20,35539,8312,35540,8316,35542,8320,35544,8323,35546,8327],{},[3587,35541,8315],{},[546,35543,8319],{},[546,35545,555],{},[546,35547,8326],{},[20,35549,8330,35550,8334],{},[546,35551,8333],{},[561,35553,35554,35556,35558,35560,35562],{},[564,35555,8339],{},[564,35557,8342],{},[564,35559,8345],{},[564,35561,8348],{},[564,35563,8351],{},[20,35565,8330,35566,8357],{},[546,35567,8356],{},[561,35569,35570,35572,35574,35576],{},[564,35571,8362],{},[564,35573,8365],{},[564,35575,8368],{},[564,35577,8371],{},[20,35579,8374,35580,2230],{},[546,35581,8377],{},[15,35583,748],{"id":747},[31,35585,8383],{"id":8382},[20,35587,8386,35588,8390],{},[546,35589,8389],{},[2459,35591,8394],{"id":8393},[561,35593,35594,35596,35598,35600],{},[564,35595,8399],{},[564,35597,8402],{},[564,35599,8405],{},[564,35601,8408],{},[20,35603,8411],{},[561,35605,35606,35608,35610],{},[564,35607,8416],{},[564,35609,8419],{},[564,35611,8422],{},[72,35613],{},[31,35615,8428],{"id":8427},[20,35617,8431],{},[561,35619,35620,35622,35624,35626],{},[564,35621,8436],{},[564,35623,8439],{},[564,35625,8442],{},[564,35627,8445],{},[24,35629,35630],{"type":631},[20,35631,8450],{},[72,35633],{},[31,35635,8456],{"id":8455},[47,35637,35638],{"className":758,"code":8459,"language":761,"meta":55,"style":55},[39,35639,35640,35648,35654,35660],{"__ignoreMap":55},[250,35641,35642,35644,35646],{"class":252,"line":253},[250,35643,4200],{"class":774},[250,35645,4203],{"class":782},[250,35647,8470],{"class":782},[250,35649,35650,35652],{"class":252,"line":113},[250,35651,874],{"class":778},[250,35653,8470],{"class":782},[250,35655,35656,35658],{"class":252,"line":110},[250,35657,4226],{"class":774},[250,35659,896],{"class":782},[250,35661,35662,35664,35666],{"class":252,"line":269},[250,35663,4226],{"class":774},[250,35665,1707],{"class":782},[250,35667,1710],{"class":782},[20,35669,8493],{},[47,35671,35673],{"className":35672,"code":8497,"language":52},[50],[39,35674,8497],{"__ignoreMap":55},[20,35676,8502],{},[72,35678],{},[31,35680,8508],{"id":8507},[20,35682,8511,35683,8515],{},[546,35684,8514],{},[20,35686,1092,35687,1007],{},[39,35688,8520],{},[47,35690,35691],{"className":1010,"code":8523,"language":1012,"meta":55,"style":55},[39,35692,35693,35703,35711,35719,35727,35743,35747,35751,35769,35789,35809,35829,35849],{"__ignoreMap":55},[250,35694,35695,35697,35699,35701],{"class":252,"line":253},[250,35696,1019],{"class":786},[250,35698,8532],{"class":786},[250,35700,4977],{"class":774},[250,35702,1118],{"class":912},[250,35704,35705,35707,35709],{"class":252,"line":113},[250,35706,2490],{"class":1370},[250,35708,1007],{"class":786},[250,35710,8545],{"class":778},[250,35712,35713,35715,35717],{"class":252,"line":110},[250,35714,2501],{"class":1370},[250,35716,1007],{"class":786},[250,35718,8545],{"class":778},[250,35720,35721,35723,35725],{"class":252,"line":269},[250,35722,2513],{"class":1370},[250,35724,1007],{"class":786},[250,35726,8562],{"class":778},[250,35728,35729,35731,35733,35735,35737,35739,35741],{"class":252,"line":275},[250,35730,8567],{"class":1370},[250,35732,1007],{"class":786},[250,35734,8572],{"class":782},[250,35736,787],{"class":786},[250,35738,8577],{"class":782},[250,35740,787],{"class":786},[250,35742,8582],{"class":782},[250,35744,35745],{"class":252,"line":281},[250,35746,991],{"class":912},[250,35748,35749],{"class":252,"line":287},[250,35750,795],{"emptyLinePlaceholder":129},[250,35752,35753,35755,35757,35759,35761,35763,35765,35767],{"class":252,"line":293},[250,35754,1019],{"class":786},[250,35756,4438],{"class":786},[250,35758,8599],{"class":778},[250,35760,1007],{"class":786},[250,35762,4977],{"class":774},[250,35764,1413],{"class":912},[250,35766,1416],{"class":786},[250,35768,1190],{"class":912},[250,35770,35771,35773,35775,35777,35779,35781,35783,35785,35787],{"class":252,"line":299},[250,35772,1195],{"class":912},[250,35774,5412],{"class":782},[250,35776,1201],{"class":912},[250,35778,1204],{"class":782},[250,35780,1207],{"class":912},[250,35782,1210],{"class":778},[250,35784,1213],{"class":912},[250,35786,1216],{"class":782},[250,35788,1219],{"class":912},[250,35790,35791,35793,35795,35797,35799,35801,35803,35805,35807],{"class":252,"line":132},[250,35792,1195],{"class":912},[250,35794,5439],{"class":782},[250,35796,1201],{"class":912},[250,35798,1231],{"class":782},[250,35800,1207],{"class":912},[250,35802,1249],{"class":778},[250,35804,1213],{"class":912},[250,35806,1216],{"class":782},[250,35808,1219],{"class":912},[250,35810,35811,35813,35815,35817,35819,35821,35823,35825,35827],{"class":252,"line":310},[250,35812,1195],{"class":912},[250,35814,5519],{"class":782},[250,35816,1201],{"class":912},[250,35818,1278],{"class":782},[250,35820,1207],{"class":912},[250,35822,1273],{"class":778},[250,35824,1213],{"class":912},[250,35826,1288],{"class":782},[250,35828,1219],{"class":912},[250,35830,35831,35833,35835,35837,35839,35841,35843,35845,35847],{"class":252,"line":316},[250,35832,1195],{"class":912},[250,35834,5572],{"class":782},[250,35836,1201],{"class":912},[250,35838,1254],{"class":782},[250,35840,1207],{"class":912},[250,35842,1259],{"class":778},[250,35844,1213],{"class":912},[250,35846,1264],{"class":782},[250,35848,8690],{"class":912},[250,35850,35851],{"class":252,"line":322},[250,35852,8695],{"class":912},[20,35854,8698],{},[72,35856],{},[31,35858,8704],{"id":8703},[20,35860,1092,35861,1007],{},[39,35862,5803],{},[47,35864,35865],{"className":1010,"code":8711,"language":1012,"meta":55,"style":55},[39,35866,35867,35877,35881,35895,35901,35905,35909],{"__ignoreMap":55},[250,35868,35869,35871,35873,35875],{"class":252,"line":253},[250,35870,1763],{"class":786},[250,35872,8720],{"class":912},[250,35874,1769],{"class":786},[250,35876,8725],{"class":782},[250,35878,35879],{"class":252,"line":113},[250,35880,795],{"emptyLinePlaceholder":129},[250,35882,35883,35885,35887,35889,35891,35893],{"class":252,"line":110},[250,35884,1019],{"class":786},[250,35886,1022],{"class":786},[250,35888,1109],{"class":774},[250,35890,1112],{"class":912},[250,35892,1115],{"class":786},[250,35894,1118],{"class":912},[250,35896,35897,35899],{"class":252,"line":269},[250,35898,1123],{"class":786},[250,35900,1118],{"class":912},[250,35902,35903],{"class":252,"line":275},[250,35904,8754],{"class":912},[250,35906,35907],{"class":252,"line":281},[250,35908,986],{"class":912},[250,35910,35911],{"class":252,"line":287},[250,35912,474],{"class":912},[20,35914,8765],{},[47,35916,35918],{"className":35917,"code":8769,"language":52},[50],[39,35919,8769],{"__ignoreMap":55},[20,35921,8774],{},[20,35923,8777,35924,8781],{},[3587,35925,8780],{},[72,35927],{},[31,35929,8787],{"id":8786},[20,35931,1092,35932,1007],{},[39,35933,8792],{},[47,35935,35936],{"className":1010,"code":8795,"language":1012,"meta":55,"style":55},[39,35937,35938,35952,35958,35966,35974,35998,36002],{"__ignoreMap":55},[250,35939,35940,35942,35944,35946,35948,35950],{"class":252,"line":253},[250,35941,1019],{"class":786},[250,35943,1022],{"class":786},[250,35945,1109],{"class":774},[250,35947,1112],{"class":912},[250,35949,1115],{"class":786},[250,35951,1118],{"class":912},[250,35953,35954,35956],{"class":252,"line":113},[250,35955,1123],{"class":786},[250,35957,1118],{"class":912},[250,35959,35960,35962,35964],{"class":252,"line":110},[250,35961,8822],{"class":912},[250,35963,8825],{"class":782},[250,35965,927],{"class":912},[250,35967,35968,35970,35972],{"class":252,"line":269},[250,35969,8832],{"class":912},[250,35971,8835],{"class":782},[250,35973,927],{"class":912},[250,35975,35976,35978,35980,35982,35984,35986,35988,35990,35992,35994,35996],{"class":252,"line":275},[250,35977,8842],{"class":912},[250,35979,8845],{"class":782},[250,35981,7128],{"class":912},[250,35983,8850],{"class":782},[250,35985,7128],{"class":912},[250,35987,8855],{"class":782},[250,35989,7128],{"class":912},[250,35991,8860],{"class":782},[250,35993,7128],{"class":912},[250,35995,8865],{"class":782},[250,35997,8695],{"class":912},[250,35999,36000],{"class":252,"line":281},[250,36001,986],{"class":912},[250,36003,36004],{"class":252,"line":287},[250,36005,474],{"class":912},[20,36007,8878],{},[72,36009],{},[31,36011,8884],{"id":8883},[20,36013,8887],{},[20,36015,1003,36016,1007],{},[39,36017,8892],{},[47,36019,36020],{"className":1010,"code":8895,"language":1012,"meta":55,"style":55},[39,36021,36022,36032,36036,36046,36050,36054,36060,36064,36068],{"__ignoreMap":55},[250,36023,36024,36026,36028,36030],{"class":252,"line":253},[250,36025,1763],{"class":786},[250,36027,8904],{"class":912},[250,36029,1769],{"class":786},[250,36031,8909],{"class":782},[250,36033,36034],{"class":252,"line":113},[250,36035,795],{"emptyLinePlaceholder":129},[250,36037,36038,36040,36042,36044],{"class":252,"line":110},[250,36039,1019],{"class":786},[250,36041,1022],{"class":786},[250,36043,8922],{"class":774},[250,36045,1028],{"class":912},[250,36047,36048],{"class":252,"line":269},[250,36049,8929],{"class":912},[250,36051,36052],{"class":252,"line":275},[250,36053,8934],{"class":912},[250,36055,36056,36058],{"class":252,"line":281},[250,36057,8939],{"class":912},[250,36059,8942],{"class":782},[250,36061,36062],{"class":252,"line":287},[250,36063,3684],{"class":912},[250,36065,36066],{"class":252,"line":293},[250,36067,986],{"class":912},[250,36069,36070],{"class":252,"line":299},[250,36071,474],{"class":912},[20,36073,8957],{},[47,36075,36076],{"className":1010,"code":8960,"language":1012,"meta":55,"style":55},[39,36077,36078,36092,36104,36110],{"__ignoreMap":55},[250,36079,36080,36082,36084,36086,36088,36090],{"class":252,"line":253},[250,36081,1019],{"class":786},[250,36083,1022],{"class":786},[250,36085,1109],{"class":774},[250,36087,1112],{"class":912},[250,36089,1115],{"class":786},[250,36091,1118],{"class":912},[250,36093,36094,36096,36098,36100,36102],{"class":252,"line":113},[250,36095,1455],{"class":786},[250,36097,8983],{"class":778},[250,36099,1187],{"class":786},[250,36101,8988],{"class":774},[250,36103,4861],{"class":912},[250,36105,36106,36108],{"class":252,"line":110},[250,36107,1123],{"class":786},[250,36109,8997],{"class":912},[250,36111,36112],{"class":252,"line":269},[250,36113,474],{"class":912},[20,36115,9004],{},[72,36117],{},[31,36119,9010],{"id":9009},[20,36121,1092,36122,1007],{},[39,36123,1353],{},[47,36125,36126],{"className":1010,"code":9017,"language":1012,"meta":55,"style":55},[39,36127,36128,36144,36148,36170,36184,36188,36198,36206,36210,36218,36226,36230,36234,36242,36248],{"__ignoreMap":55},[250,36129,36130,36132,36134,36136,36138,36140,36142],{"class":252,"line":253},[250,36131,1949],{"class":786},[250,36133,1405],{"class":912},[250,36135,1007],{"class":786},[250,36137,1410],{"class":778},[250,36139,1413],{"class":912},[250,36141,1416],{"class":786},[250,36143,9036],{"class":912},[250,36145,36146],{"class":252,"line":113},[250,36147,795],{"emptyLinePlaceholder":129},[250,36149,36150,36152,36154,36156,36158,36160,36162,36164,36166,36168],{"class":252,"line":110},[250,36151,1019],{"class":786},[250,36153,1022],{"class":786},[250,36155,1109],{"class":774},[250,36157,1434],{"class":912},[250,36159,1437],{"class":786},[250,36161,1440],{"class":912},[250,36163,1443],{"class":1370},[250,36165,1446],{"class":912},[250,36167,1115],{"class":786},[250,36169,1118],{"class":912},[250,36171,36172,36174,36176,36178,36180,36182],{"class":252,"line":269},[250,36173,1455],{"class":786},[250,36175,1458],{"class":778},[250,36177,1187],{"class":786},[250,36179,1463],{"class":786},[250,36181,1466],{"class":774},[250,36183,9077],{"class":912},[250,36185,36186],{"class":252,"line":275},[250,36187,795],{"emptyLinePlaceholder":129},[250,36189,36190,36192,36194,36196],{"class":252,"line":281},[250,36191,1455],{"class":786},[250,36193,1604],{"class":778},[250,36195,1187],{"class":786},[250,36197,1118],{"class":912},[250,36199,36200,36202,36204],{"class":252,"line":287},[250,36201,1613],{"class":912},[250,36203,1616],{"class":774},[250,36205,1156],{"class":912},[250,36207,36208],{"class":252,"line":293},[250,36209,9104],{"class":912},[250,36211,36212,36214,36216],{"class":252,"line":299},[250,36213,1628],{"class":912},[250,36215,1631],{"class":782},[250,36217,927],{"class":912},[250,36219,36220,36222,36224],{"class":252,"line":132},[250,36221,9117],{"class":912},[250,36223,1153],{"class":774},[250,36225,4861],{"class":912},[250,36227,36228],{"class":252,"line":310},[250,36229,986],{"class":912},[250,36231,36232],{"class":252,"line":316},[250,36233,795],{"emptyLinePlaceholder":129},[250,36235,36236,36238,36240],{"class":252,"line":322},[250,36237,1665],{"class":912},[250,36239,1668],{"class":774},[250,36241,9138],{"class":912},[250,36243,36244,36246],{"class":252,"line":328},[250,36245,1123],{"class":786},[250,36247,9145],{"class":912},[250,36249,36250],{"class":252,"line":334},[250,36251,474],{"class":912},[20,36253,9152,36254,9156],{},[546,36255,9155],{},[20,36257,9159],{},[72,36259],{},[31,36261,9165],{"id":9164},[20,36263,9168,36264,9171],{},[39,36265,775],{},[47,36267,36268],{"className":758,"code":9174,"language":761,"meta":55,"style":55},[39,36269,36270,36282,36290],{"__ignoreMap":55},[250,36271,36272,36274,36276,36278,36280],{"class":252,"line":253},[250,36273,775],{"class":774},[250,36275,7895],{"class":778},[250,36277,7898],{"class":782},[250,36279,7937],{"class":782},[250,36281,7940],{"class":778},[250,36283,36284,36286,36288],{"class":252,"line":113},[250,36285,7945],{"class":778},[250,36287,7948],{"class":782},[250,36289,7940],{"class":778},[250,36291,36292,36294],{"class":252,"line":110},[250,36293,7955],{"class":778},[250,36295,9203],{"class":782},[20,36297,9206],{},[72,36299],{},[31,36301,9212],{"id":9211},[20,36303,9215],{},[561,36305,36306,36308,36310,36312,36314],{},[564,36307,9220],{},[564,36309,9223],{},[564,36311,3346],{},[564,36313,9228],{},[564,36315,9231],{},[2459,36317,9235],{"id":9234},[561,36319,36320,36324,36328],{},[564,36321,3299,36322],{},[39,36323,8076],{},[564,36325,3299,36326],{},[39,36327,9246],{},[564,36329,3340,36330,9251],{},[39,36331,3343],{},[72,36333],{},[15,36335,9257],{"id":9256},[20,36337,8330,36338,9262],{},[546,36339,8356],{},[561,36341,36342,36344,36346,36348,36350],{},[564,36343,9267],{},[564,36345,9270],{},[564,36347,9273],{},[564,36349,9276],{},[564,36351,9279],{},[72,36353],{},[15,36355,3352],{"id":3351},[20,36357,9286,36358,9290],{},[546,36359,9289],{},[20,36361,8330,36362,9295,36364,2230],{},[546,36363,8356],{},[546,36365,9298],{},[20,36367,9301],{},[500,36369,9304],{},{"title":55,"searchDepth":110,"depth":110,"links":36371},[36372,36375,36376,36377,36378,36379,36380,36381,36382,36383],{"id":8382,"depth":113,"text":8383,"children":36373},[36374],{"id":8393,"depth":110,"text":8394},{"id":8427,"depth":113,"text":8428},{"id":8455,"depth":113,"text":8456},{"id":8507,"depth":113,"text":8508},{"id":8703,"depth":113,"text":8704},{"id":8786,"depth":113,"text":8787},{"id":8883,"depth":113,"text":8884},{"id":9009,"depth":113,"text":9010},{"id":9164,"depth":113,"text":9165},{"id":9211,"depth":113,"text":9212,"children":36384},[36385],{"id":9234,"depth":110,"text":9235},{"type":12,"value":36387},[36388,36390,36400,36404,36416,36420,36430],[15,36389,541],{"id":540},[20,36391,8312,36392,8316,36394,8320,36396,8323,36398,8327],{},[3587,36393,8315],{},[546,36395,8319],{},[546,36397,555],{},[546,36399,8326],{},[20,36401,8330,36402,8334],{},[546,36403,8333],{},[561,36405,36406,36408,36410,36412,36414],{},[564,36407,8339],{},[564,36409,8342],{},[564,36411,8345],{},[564,36413,8348],{},[564,36415,8351],{},[20,36417,8330,36418,8357],{},[546,36419,8356],{},[561,36421,36422,36424,36426,36428],{},[564,36423,8362],{},[564,36425,8365],{},[564,36427,8368],{},[564,36429,8371],{},[20,36431,8374,36432,2230],{},[546,36433,8377],{},[3504,9373,3508,9374,3509,8234],{},{"title":8304,"description":9322},"food-truck-p1",{"id":9382,"title":9383,"author":36439,"body":36440,"canonical":115,"categories":115,"date":9321,"description":10749,"excerpt":37615,"extension":118,"img":9371,"keywords":37647,"language":3510,"meta":37648,"navigation":129,"ogImage":115,"path":10786,"rating":132,"readTime":132,"seo":37649,"stem":10788,"tag":10789,"__hash__":10790,"slug":37650},{"name":8,"img":10,"website":535},{"type":12,"value":36441,"toc":37596},[36442,36444,36452,36458,36470,36472,36474,36476,36478,36494,36498,36500,36502,36506,36508,36520,36522,36526,36584,36586,36594,36596,36598,36600,36604,36740,36742,36744,36746,36748,36752,36828,36830,36898,36900,36902,36904,36906,36910,37018,37020,37024,37196,37198,37202,37204,37206,37210,37304,37306,37308,37310,37312,37316,37348,37352,37470,37472,37474,37476,37478,37490,37494,37502,37512,37514,37516,37518,37520,37542,37544,37554,37556,37558,37564,37576,37580,37582,37592,37594],[15,36443,541],{"id":540},[20,36445,8330,36446,9393,36448,9396,36450,9399],{},[546,36447,8333],{},[546,36449,8389],{},[546,36451,555],{},[20,36453,8330,36454,9404,36456,9408],{},[546,36455,8356],{},[546,36457,9407],{},[561,36459,36460,36462,36464,36466,36468],{},[564,36461,9267],{},[564,36463,9415],{},[564,36465,9270],{},[564,36467,9420],{},[564,36469,9423],{},[20,36471,9426],{},[15,36473,748],{"id":747},[31,36475,9432],{"id":9431},[20,36477,9435],{},[561,36479,36480,36484,36488,36492],{},[564,36481,36482],{},[39,36483,9442],{},[564,36485,36486],{},[39,36487,9447],{},[564,36489,36490],{},[39,36491,9452],{},[564,36493,9455],{},[20,36495,9458,36496,9462],{},[546,36497,9461],{},[72,36499],{},[31,36501,9468],{"id":9467},[20,36503,9471,36504,9475],{},[546,36505,9474],{},[2459,36507,9479],{"id":9478},[47,36509,36510],{"className":758,"code":9482,"language":761,"meta":55,"style":55},[39,36511,36512],{"__ignoreMap":55},[250,36513,36514,36516,36518],{"class":252,"line":253},[250,36515,4226],{"class":774},[250,36517,808],{"class":782},[250,36519,9493],{"class":782},[2459,36521,9497],{"id":9496},[20,36523,1092,36524,1007],{},[39,36525,9502],{},[47,36527,36528],{"className":1010,"code":9505,"language":1012,"meta":55,"style":55},[39,36529,36530,36540,36550,36554,36568,36580],{"__ignoreMap":55},[250,36531,36532,36534,36536,36538],{"class":252,"line":253},[250,36533,1763],{"class":786},[250,36535,9514],{"class":912},[250,36537,1769],{"class":786},[250,36539,9519],{"class":782},[250,36541,36542,36544,36546,36548],{"class":252,"line":113},[250,36543,1763],{"class":786},[250,36545,9526],{"class":912},[250,36547,1769],{"class":786},[250,36549,9531],{"class":782},[250,36551,36552],{"class":252,"line":110},[250,36553,795],{"emptyLinePlaceholder":129},[250,36555,36556,36558,36560,36562,36564,36566],{"class":252,"line":269},[250,36557,1019],{"class":786},[250,36559,4438],{"class":786},[250,36561,9544],{"class":778},[250,36563,1187],{"class":786},[250,36565,9549],{"class":774},[250,36567,1028],{"class":912},[250,36569,36570,36572,36574,36576,36578],{"class":252,"line":275},[250,36571,9556],{"class":912},[250,36573,9559],{"class":774},[250,36575,9562],{"class":912},[250,36577,9565],{"class":782},[250,36579,4599],{"class":912},[250,36581,36582],{"class":252,"line":281},[250,36583,474],{"class":912},[20,36585,9574],{},[561,36587,36588,36590,36592],{},[564,36589,9579],{},[564,36591,9582],{},[564,36593,9585],{},[20,36595,9588],{},[72,36597],{},[31,36599,9594],{"id":9593},[20,36601,1003,36602,1007],{},[39,36603,1353],{},[47,36605,36606],{"className":1010,"code":9601,"language":1012,"meta":55,"style":55},[39,36607,36608,36618,36622,36644,36658,36662,36672,36680,36684,36692,36700,36704,36708,36730,36736],{"__ignoreMap":55},[250,36609,36610,36612,36614,36616],{"class":252,"line":253},[250,36611,1763],{"class":786},[250,36613,9610],{"class":912},[250,36615,1769],{"class":786},[250,36617,9615],{"class":782},[250,36619,36620],{"class":252,"line":113},[250,36621,795],{"emptyLinePlaceholder":129},[250,36623,36624,36626,36628,36630,36632,36634,36636,36638,36640,36642],{"class":252,"line":110},[250,36625,1019],{"class":786},[250,36627,1022],{"class":786},[250,36629,1109],{"class":774},[250,36631,1434],{"class":912},[250,36633,1437],{"class":786},[250,36635,1440],{"class":912},[250,36637,1443],{"class":1370},[250,36639,1446],{"class":912},[250,36641,1115],{"class":786},[250,36643,1118],{"class":912},[250,36645,36646,36648,36650,36652,36654,36656],{"class":252,"line":269},[250,36647,1455],{"class":786},[250,36649,1458],{"class":778},[250,36651,1187],{"class":786},[250,36653,1463],{"class":786},[250,36655,1466],{"class":774},[250,36657,9077],{"class":912},[250,36659,36660],{"class":252,"line":275},[250,36661,795],{"emptyLinePlaceholder":129},[250,36663,36664,36666,36668,36670],{"class":252,"line":281},[250,36665,1455],{"class":786},[250,36667,1604],{"class":778},[250,36669,1187],{"class":786},[250,36671,1118],{"class":912},[250,36673,36674,36676,36678],{"class":252,"line":287},[250,36675,1613],{"class":912},[250,36677,1616],{"class":774},[250,36679,1156],{"class":912},[250,36681,36682],{"class":252,"line":293},[250,36683,9104],{"class":912},[250,36685,36686,36688,36690],{"class":252,"line":299},[250,36687,1628],{"class":912},[250,36689,1631],{"class":782},[250,36691,927],{"class":912},[250,36693,36694,36696,36698],{"class":252,"line":132},[250,36695,9117],{"class":912},[250,36697,1153],{"class":774},[250,36699,4861],{"class":912},[250,36701,36702],{"class":252,"line":310},[250,36703,986],{"class":912},[250,36705,36706],{"class":252,"line":316},[250,36707,795],{"emptyLinePlaceholder":129},[250,36709,36710,36712,36714,36716,36718,36720,36722,36724,36726,36728],{"class":252,"line":322},[250,36711,1565],{"class":786},[250,36713,9712],{"class":912},[250,36715,9715],{"class":774},[250,36717,1434],{"class":912},[250,36719,9720],{"class":782},[250,36721,7710],{"class":912},[250,36723,2230],{"class":782},[250,36725,9727],{"class":912},[250,36727,2355],{"class":782},[250,36729,9732],{"class":912},[250,36731,36732,36734],{"class":252,"line":328},[250,36733,1123],{"class":786},[250,36735,9145],{"class":912},[250,36737,36738],{"class":252,"line":334},[250,36739,474],{"class":912},[20,36741,9745],{},[72,36743],{},[31,36745,9751],{"id":9750},[20,36747,9754],{},[20,36749,1092,36750,1007],{},[39,36751,9759],{},[47,36753,36754],{"className":1010,"code":9762,"language":1012,"meta":55,"style":55},[39,36755,36756,36774,36794,36802,36810,36816,36820,36824],{"__ignoreMap":55},[250,36757,36758,36760,36762,36764,36766,36768,36770,36772],{"class":252,"line":253},[250,36759,1019],{"class":786},[250,36761,1845],{"class":786},[250,36763,9773],{"class":774},[250,36765,1434],{"class":912},[250,36767,9778],{"class":1370},[250,36769,1007],{"class":786},[250,36771,1410],{"class":778},[250,36773,1512],{"class":912},[250,36775,36776,36778,36780,36782,36784,36786,36788,36790,36792],{"class":252,"line":113},[250,36777,1486],{"class":786},[250,36779,1440],{"class":912},[250,36781,1491],{"class":786},[250,36783,9795],{"class":912},[250,36785,1497],{"class":786},[250,36787,6286],{"class":786},[250,36789,6289],{"class":912},[250,36791,6292],{"class":774},[250,36793,9806],{"class":912},[250,36795,36796,36798,36800],{"class":252,"line":110},[250,36797,1517],{"class":786},[250,36799,1520],{"class":774},[250,36801,1028],{"class":912},[250,36803,36804,36806,36808],{"class":252,"line":269},[250,36805,1527],{"class":912},[250,36807,1530],{"class":778},[250,36809,927],{"class":912},[250,36811,36812,36814],{"class":252,"line":275},[250,36813,1537],{"class":912},[250,36815,9829],{"class":782},[250,36817,36818],{"class":252,"line":281},[250,36819,7485],{"class":912},[250,36821,36822],{"class":252,"line":287},[250,36823,986],{"class":912},[250,36825,36826],{"class":252,"line":293},[250,36827,991],{"class":912},[20,36829,9844],{},[47,36831,36832],{"className":1010,"code":9847,"language":1012,"meta":55,"style":55},[39,36833,36834,36844,36848,36870,36884,36890,36894],{"__ignoreMap":55},[250,36835,36836,36838,36840,36842],{"class":252,"line":253},[250,36837,1763],{"class":786},[250,36839,9856],{"class":912},[250,36841,1769],{"class":786},[250,36843,9861],{"class":782},[250,36845,36846],{"class":252,"line":113},[250,36847,795],{"emptyLinePlaceholder":129},[250,36849,36850,36852,36854,36856,36858,36860,36862,36864,36866,36868],{"class":252,"line":110},[250,36851,1019],{"class":786},[250,36853,1022],{"class":786},[250,36855,1109],{"class":774},[250,36857,1434],{"class":912},[250,36859,1437],{"class":786},[250,36861,1440],{"class":912},[250,36863,1443],{"class":1370},[250,36865,1446],{"class":912},[250,36867,1115],{"class":786},[250,36869,1118],{"class":912},[250,36871,36872,36874,36876,36878,36880,36882],{"class":252,"line":269},[250,36873,1455],{"class":786},[250,36875,1458],{"class":778},[250,36877,1187],{"class":786},[250,36879,1463],{"class":786},[250,36881,1466],{"class":774},[250,36883,9077],{"class":912},[250,36885,36886,36888],{"class":252,"line":275},[250,36887,9906],{"class":774},[250,36889,9909],{"class":912},[250,36891,36892],{"class":252,"line":281},[250,36893,9914],{"class":768},[250,36895,36896],{"class":252,"line":287},[250,36897,474],{"class":912},[20,36899,9921],{},[72,36901],{},[31,36903,9927],{"id":9926},[2459,36905,7570],{"id":7569},[20,36907,1092,36908,1007],{},[39,36909,7575],{},[47,36911,36912],{"className":1010,"code":9936,"language":1012,"meta":55,"style":55},[39,36913,36914,36924,36928,36946,36966,36984,37004,37008,37014],{"__ignoreMap":55},[250,36915,36916,36918,36920,36922],{"class":252,"line":253},[250,36917,1763],{"class":786},[250,36919,9610],{"class":912},[250,36921,1769],{"class":786},[250,36923,9615],{"class":782},[250,36925,36926],{"class":252,"line":113},[250,36927,795],{"emptyLinePlaceholder":129},[250,36929,36930,36932,36934,36936,36938,36940,36942,36944],{"class":252,"line":110},[250,36931,1019],{"class":786},[250,36933,1022],{"class":786},[250,36935,1109],{"class":774},[250,36937,1434],{"class":912},[250,36939,1437],{"class":786},[250,36941,2015],{"class":912},[250,36943,1115],{"class":786},[250,36945,1118],{"class":912},[250,36947,36948,36950,36952,36954,36956,36958,36960,36962,36964],{"class":252,"line":269},[250,36949,1455],{"class":786},[250,36951,9977],{"class":778},[250,36953,1187],{"class":786},[250,36955,1463],{"class":786},[250,36957,9712],{"class":912},[250,36959,9986],{"class":774},[250,36961,1434],{"class":912},[250,36963,9991],{"class":782},[250,36965,4852],{"class":912},[250,36967,36968,36970,36972,36974,36976,36978,36980,36982],{"class":252,"line":275},[250,36969,1455],{"class":786},[250,36971,1405],{"class":778},[250,36973,1187],{"class":786},[250,36975,1463],{"class":786},[250,36977,1571],{"class":778},[250,36979,2230],{"class":912},[250,36981,2233],{"class":774},[250,36983,1982],{"class":912},[250,36985,36986,36988,36990,36992,36994,36996,36998,37000,37002],{"class":252,"line":281},[250,36987,10016],{"class":912},[250,36989,2820],{"class":774},[250,36991,1574],{"class":912},[250,36993,10023],{"class":1370},[250,36995,1446],{"class":912},[250,36997,1115],{"class":786},[250,36999,9712],{"class":912},[250,37001,10032],{"class":774},[250,37003,10035],{"class":912},[250,37005,37006],{"class":252,"line":287},[250,37007,10040],{"class":912},[250,37009,37010,37012],{"class":252,"line":293},[250,37011,1123],{"class":786},[250,37013,10047],{"class":912},[250,37015,37016],{"class":252,"line":299},[250,37017,474],{"class":912},[2459,37019,7060],{"id":7059},[20,37021,1092,37022,1007],{},[39,37023,7065],{},[47,37025,37026],{"className":1010,"code":10060,"language":1012,"meta":55,"style":55},[39,37027,37028,37038,37042,37064,37074,37088,37092,37116,37126,37142,37146,37150,37164,37182,37186,37192],{"__ignoreMap":55},[250,37029,37030,37032,37034,37036],{"class":252,"line":253},[250,37031,1763],{"class":786},[250,37033,9610],{"class":912},[250,37035,1769],{"class":786},[250,37037,10073],{"class":782},[250,37039,37040],{"class":252,"line":113},[250,37041,795],{"emptyLinePlaceholder":129},[250,37043,37044,37046,37048,37050,37052,37054,37056,37058,37060,37062],{"class":252,"line":110},[250,37045,1019],{"class":786},[250,37047,1022],{"class":786},[250,37049,1109],{"class":774},[250,37051,1434],{"class":912},[250,37053,1437],{"class":786},[250,37055,1440],{"class":912},[250,37057,1443],{"class":1370},[250,37059,1446],{"class":912},[250,37061,1115],{"class":786},[250,37063,1118],{"class":912},[250,37065,37066,37068,37070,37072],{"class":252,"line":269},[250,37067,1455],{"class":786},[250,37069,5964],{"class":778},[250,37071,1187],{"class":786},[250,37073,10110],{"class":912},[250,37075,37076,37078,37080,37082,37084,37086],{"class":252,"line":275},[250,37077,1455],{"class":786},[250,37079,1458],{"class":778},[250,37081,1187],{"class":786},[250,37083,1463],{"class":786},[250,37085,1466],{"class":774},[250,37087,9077],{"class":912},[250,37089,37090],{"class":252,"line":281},[250,37091,795],{"emptyLinePlaceholder":129},[250,37093,37094,37096,37098,37100,37102,37104,37106,37108,37110,37112,37114],{"class":252,"line":287},[250,37095,1455],{"class":786},[250,37097,1604],{"class":778},[250,37099,1187],{"class":786},[250,37101,1463],{"class":786},[250,37103,9712],{"class":912},[250,37105,10032],{"class":774},[250,37107,1434],{"class":912},[250,37109,9720],{"class":782},[250,37111,9727],{"class":912},[250,37113,2355],{"class":782},[250,37115,4852],{"class":912},[250,37117,37118,37120,37122,37124],{"class":252,"line":293},[250,37119,1486],{"class":786},[250,37121,1440],{"class":912},[250,37123,1491],{"class":786},[250,37125,10163],{"class":912},[250,37127,37128,37130,37132,37134,37136,37138,37140],{"class":252,"line":299},[250,37129,1517],{"class":786},[250,37131,1520],{"class":774},[250,37133,10172],{"class":912},[250,37135,6094],{"class":778},[250,37137,10177],{"class":912},[250,37139,7421],{"class":782},[250,37141,4599],{"class":912},[250,37143,37144],{"class":252,"line":132},[250,37145,986],{"class":912},[250,37147,37148],{"class":252,"line":310},[250,37149,795],{"emptyLinePlaceholder":129},[250,37151,37152,37154,37156,37158,37160,37162],{"class":252,"line":316},[250,37153,1455],{"class":786},[250,37155,10196],{"class":778},[250,37157,1187],{"class":786},[250,37159,7768],{"class":912},[250,37161,7771],{"class":786},[250,37163,10205],{"class":912},[250,37165,37166,37168,37170,37172,37174,37176,37178,37180],{"class":252,"line":322},[250,37167,1565],{"class":786},[250,37169,9712],{"class":912},[250,37171,9715],{"class":774},[250,37173,1434],{"class":912},[250,37175,9720],{"class":782},[250,37177,9727],{"class":912},[250,37179,2355],{"class":782},[250,37181,10224],{"class":912},[250,37183,37184],{"class":252,"line":328},[250,37185,795],{"emptyLinePlaceholder":129},[250,37187,37188,37190],{"class":252,"line":334},[250,37189,1123],{"class":786},[250,37191,10235],{"class":912},[250,37193,37194],{"class":252,"line":340},[250,37195,474],{"class":912},[20,37197,10242],{},[561,37199,37200],{},[564,37201,10247],{},[72,37203],{},[31,37205,10253],{"id":10252},[20,37207,1092,37208,1007],{},[39,37209,10258],{},[47,37211,37212],{"className":1010,"code":10261,"language":1012,"meta":55,"style":55},[39,37213,37214,37232,37252,37260,37292,37296,37300],{"__ignoreMap":55},[250,37215,37216,37218,37220,37222,37224,37226,37228,37230],{"class":252,"line":253},[250,37217,1019],{"class":786},[250,37219,1022],{"class":786},[250,37221,10272],{"class":774},[250,37223,1574],{"class":912},[250,37225,10277],{"class":1370},[250,37227,1446],{"class":912},[250,37229,1115],{"class":786},[250,37231,1118],{"class":912},[250,37233,37234,37236,37238,37240,37242,37244,37246,37248,37250],{"class":252,"line":113},[250,37235,10288],{"class":912},[250,37237,10291],{"class":774},[250,37239,1434],{"class":912},[250,37241,10296],{"class":782},[250,37243,10299],{"class":912},[250,37245,1443],{"class":1370},[250,37247,1446],{"class":912},[250,37249,1115],{"class":786},[250,37251,1118],{"class":912},[250,37253,37254,37256,37258],{"class":252,"line":110},[250,37255,10312],{"class":912},[250,37257,1859],{"class":774},[250,37259,1982],{"class":912},[250,37261,37262,37264,37266,37268,37270,37272,37274,37276,37278,37280,37282,37284,37286,37288,37290],{"class":252,"line":269},[250,37263,10321],{"class":782},[250,37265,1641],{"class":786},[250,37267,1644],{"class":774},[250,37269,1647],{"class":782},[250,37271,1650],{"class":774},[250,37273,10332],{"class":782},[250,37275,10335],{"class":782},[250,37277,1443],{"class":912},[250,37279,2230],{"class":782},[250,37281,10342],{"class":912},[250,37283,10345],{"class":782},[250,37285,1443],{"class":912},[250,37287,2230],{"class":782},[250,37289,10352],{"class":912},[250,37291,10355],{"class":782},[250,37293,37294],{"class":252,"line":275},[250,37295,10360],{"class":912},[250,37297,37298],{"class":252,"line":281},[250,37299,10365],{"class":912},[250,37301,37302],{"class":252,"line":287},[250,37303,474],{"class":912},[20,37305,10372],{},[72,37307],{},[31,37309,10378],{"id":10377},[20,37311,10381],{},[20,37313,1003,37314,1007],{},[39,37315,8892],{},[47,37317,37318],{"className":1010,"code":10388,"language":1012,"meta":55,"style":55},[39,37319,37320,37330,37334,37340,37344],{"__ignoreMap":55},[250,37321,37322,37324,37326,37328],{"class":252,"line":253},[250,37323,1019],{"class":786},[250,37325,1022],{"class":786},[250,37327,8922],{"class":774},[250,37329,1028],{"class":912},[250,37331,37332],{"class":252,"line":113},[250,37333,8929],{"class":912},[250,37335,37336,37338],{"class":252,"line":110},[250,37337,10409],{"class":912},[250,37339,10412],{"class":782},[250,37341,37342],{"class":252,"line":269},[250,37343,986],{"class":912},[250,37345,37346],{"class":252,"line":275},[250,37347,474],{"class":912},[20,37349,1092,37350,1007],{},[39,37351,10425],{},[47,37353,37354],{"className":1010,"code":10428,"language":1012,"meta":55,"style":55},[39,37355,37356,37370,37384,37408,37426,37438,37454,37458,37462,37466],{"__ignoreMap":55},[250,37357,37358,37360,37362,37364,37366,37368],{"class":252,"line":253},[250,37359,1019],{"class":786},[250,37361,1022],{"class":786},[250,37363,10272],{"class":774},[250,37365,1112],{"class":912},[250,37367,1115],{"class":786},[250,37369,1118],{"class":912},[250,37371,37372,37374,37376,37378,37380,37382],{"class":252,"line":113},[250,37373,10449],{"class":774},[250,37375,1574],{"class":912},[250,37377,1443],{"class":1370},[250,37379,1446],{"class":912},[250,37381,1115],{"class":786},[250,37383,1118],{"class":912},[250,37385,37386,37388,37390,37392,37394,37396,37398,37400,37402,37404,37406],{"class":252,"line":110},[250,37387,6463],{"class":786},[250,37389,10466],{"class":912},[250,37391,10469],{"class":774},[250,37393,1434],{"class":912},[250,37395,10474],{"class":782},[250,37397,1446],{"class":912},[250,37399,10479],{"class":786},[250,37401,10482],{"class":912},[250,37403,10485],{"class":786},[250,37405,10488],{"class":782},[250,37407,1512],{"class":912},[250,37409,37410,37412,37414,37416,37418,37420,37422,37424],{"class":252,"line":269},[250,37411,7721],{"class":786},[250,37413,10497],{"class":778},[250,37415,1187],{"class":786},[250,37417,10502],{"class":912},[250,37419,6062],{"class":774},[250,37421,1434],{"class":912},[250,37423,10509],{"class":782},[250,37425,4852],{"class":912},[250,37427,37428,37430,37432,37434,37436],{"class":252,"line":275},[250,37429,10516],{"class":786},[250,37431,10519],{"class":912},[250,37433,10485],{"class":786},[250,37435,8988],{"class":774},[250,37437,10526],{"class":912},[250,37439,37440,37442,37444,37446,37448,37450,37452],{"class":252,"line":281},[250,37441,10531],{"class":786},[250,37443,1520],{"class":774},[250,37445,10172],{"class":912},[250,37447,10538],{"class":778},[250,37449,10177],{"class":912},[250,37451,10543],{"class":782},[250,37453,4599],{"class":912},[250,37455,37456],{"class":252,"line":287},[250,37457,10550],{"class":912},[250,37459,37460],{"class":252,"line":293},[250,37461,3684],{"class":912},[250,37463,37464],{"class":252,"line":299},[250,37465,10365],{"class":912},[250,37467,37468],{"class":252,"line":132},[250,37469,474],{"class":912},[20,37471,10565],{},[72,37473],{},[31,37475,10571],{"id":10570},[20,37477,10574],{},[47,37479,37480],{"className":758,"code":10577,"language":761,"meta":55,"style":55},[39,37481,37482],{"__ignoreMap":55},[250,37483,37484,37486,37488],{"class":252,"line":253},[250,37485,4226],{"class":774},[250,37487,1707],{"class":782},[250,37489,3234],{"class":782},[20,37491,10590,37492,10594],{},[39,37493,10593],{},[561,37495,37496,37498,37500],{},[564,37497,10599],{},[564,37499,10602],{},[564,37501,10605],{},[47,37503,37504],{"className":758,"code":10608,"language":761,"meta":55,"style":55},[39,37505,37506],{"__ignoreMap":55},[250,37507,37508,37510],{"class":252,"line":253},[250,37509,10615],{"class":774},[250,37511,3243],{"class":782},[20,37513,10620],{},[72,37515],{},[31,37517,10626],{"id":10625},[2459,37519,10630],{"id":10629},[561,37521,37522,37526,37530,37534,37538],{},[564,37523,3299,37524],{},[39,37525,8076],{},[564,37527,3299,37528],{},[39,37529,9246],{},[564,37531,3299,37532],{},[39,37533,3343],{},[564,37535,3340,37536],{},[39,37537,3343],{},[564,37539,10651,37540,9251],{},[39,37541,8124],{},[20,37543,10656],{},[561,37545,37546,37548,37550,37552],{},[564,37547,10661],{},[564,37549,10664],{},[564,37551,10667],{},[564,37553,10670],{},[72,37555],{},[15,37557,3352],{"id":3351},[20,37559,10677,37560,10681,37562,1007],{},[546,37561,10680],{},[546,37563,555],{},[561,37565,37566,37568,37570,37572,37574],{},[564,37567,9579],{},[564,37569,10690],{},[564,37571,10693],{},[564,37573,10696],{},[564,37575,10699],{},[20,37577,10702,37578,10706],{},[546,37579,10705],{},[20,37581,10709],{},[561,37583,37584,37586,37588,37590],{},[564,37585,10714],{},[564,37587,10717],{},[564,37589,10720],{},[564,37591,10723],{},[20,37593,10726],{},[500,37595,10729],{},{"title":55,"searchDepth":110,"depth":110,"links":37597},[37598,37599,37603,37604,37605,37609,37610,37611,37612],{"id":9431,"depth":113,"text":9432},{"id":9467,"depth":113,"text":9468,"children":37600},[37601,37602],{"id":9478,"depth":110,"text":9479},{"id":9496,"depth":110,"text":9497},{"id":9593,"depth":113,"text":9594},{"id":9750,"depth":113,"text":9751},{"id":9926,"depth":113,"text":9927,"children":37606},[37607,37608],{"id":7569,"depth":110,"text":7570},{"id":7059,"depth":110,"text":7060},{"id":10252,"depth":113,"text":10253},{"id":10377,"depth":113,"text":10378},{"id":10570,"depth":113,"text":10571},{"id":10625,"depth":113,"text":10626,"children":37613},[37614],{"id":10629,"depth":110,"text":10630},{"type":12,"value":37616},[37617,37619,37627,37633,37645],[15,37618,541],{"id":540},[20,37620,8330,37621,9393,37623,9396,37625,9399],{},[546,37622,8333],{},[546,37624,8389],{},[546,37626,555],{},[20,37628,8330,37629,9404,37631,9408],{},[546,37630,8356],{},[546,37632,9407],{},[561,37634,37635,37637,37639,37641,37643],{},[564,37636,9267],{},[564,37638,9415],{},[564,37640,9270],{},[564,37642,9420],{},[564,37644,9423],{},[20,37646,9426],{},[3504,9373,3508,10783,10784,9374],{},{"title":9383,"description":10749},"food-truck-p2",{"id":10792,"title":10793,"author":37652,"body":37653,"canonical":115,"categories":115,"date":10971,"description":10972,"excerpt":37782,"extension":118,"img":10984,"keywords":37793,"language":3510,"meta":37794,"navigation":129,"ogImage":115,"path":10992,"rating":275,"readTime":281,"seo":37795,"stem":10994,"tag":10995,"__hash__":10996,"slug":37796},{"name":8,"img":10,"website":535},{"type":12,"value":37654,"toc":37774},[37655,37657,37664,37666,37668,37670,37674,37676,37678,37692,37694,37696,37700,37710,37714,37716,37718,37772],[15,37656,541],{"id":540},[20,37658,10801,37659,10805,37661,10811],{},[546,37660,10804],{},[203,37662,10810],{"href":10808,"rel":37663},[207],[15,37665,748],{"id":747},[31,37667,10817],{"id":10816},[20,37669,10820],{},[24,37671,37672],{"type":631},[20,37673,10825],{},[31,37675,10829],{"id":10828},[20,37677,10832],{},[10834,37679,37680,37682],{},[2459,37681,10839],{"id":10838},[561,37683,37684,37686,37688,37690],{},[564,37685,10844],{},[564,37687,10847],{},[564,37689,10850],{},[564,37691,10853],{},[20,37693,10856],{},[31,37695,10860],{"id":10859},[20,37697,10863,37698,10867],{},[546,37699,10866],{},[561,37701,37702,37704,37706,37708],{},[564,37703,10872],{},[564,37705,10875],{},[564,37707,10878],{},[564,37709,10881],{},[24,37711,37712],{"type":26},[20,37713,10886],{},[31,37715,10890],{"id":10889},[20,37717,10893],{},[47,37719,37720],{"className":1010,"code":10896,"filename":10897,"language":1012,"meta":55,"style":55},[39,37721,37722,37732,37740,37748,37756,37760,37764],{"__ignoreMap":55},[250,37723,37724,37726,37728,37730],{"class":252,"line":253},[250,37725,1181],{"class":786},[250,37727,10906],{"class":778},[250,37729,1187],{"class":786},[250,37731,1118],{"class":912},[250,37733,37734,37736,37738],{"class":252,"line":113},[250,37735,10915],{"class":912},[250,37737,10918],{"class":782},[250,37739,927],{"class":912},[250,37741,37742,37744,37746],{"class":252,"line":110},[250,37743,10925],{"class":912},[250,37745,10928],{"class":782},[250,37747,927],{"class":912},[250,37749,37750,37752,37754],{"class":252,"line":269},[250,37751,10935],{"class":912},[250,37753,10938],{"class":782},[250,37755,927],{"class":912},[250,37757,37758],{"class":252,"line":275},[250,37759,10945],{"class":912},[250,37761,37762],{"class":252,"line":281},[250,37763,795],{"emptyLinePlaceholder":129},[250,37765,37766,37768,37770],{"class":252,"line":287},[250,37767,10954],{"class":912},[250,37769,1859],{"class":774},[250,37771,10959],{"class":912},[500,37773,10962],{},{"title":55,"searchDepth":110,"depth":110,"links":37775},[37776,37777,37780,37781],{"id":10816,"depth":113,"text":10817},{"id":10828,"depth":113,"text":10829,"children":37778},[37779],{"id":10838,"depth":110,"text":10839},{"id":10859,"depth":113,"text":10860},{"id":10889,"depth":113,"text":10890},{"type":12,"value":37783},[37784,37786],[15,37785,541],{"id":540},[20,37787,10801,37788,10805,37790,10811],{},[546,37789,10804],{},[203,37791,10810],{"href":10808,"rel":37792},[207],[10986,10987,10988,10989,10990],{},{"title":10793,"description":10972},"mps-new-begins",{"id":10998,"title":10999,"author":37798,"body":37799,"canonical":115,"categories":115,"date":11046,"description":11047,"excerpt":37833,"extension":118,"img":521,"keywords":37839,"language":524,"meta":37840,"navigation":129,"ogImage":115,"path":11056,"rating":11057,"readTime":110,"seo":37841,"stem":11059,"tag":11060,"__hash__":11061,"slug":37842},{"name":8,"website":9,"img":10},{"type":12,"value":37800,"toc":37831},[37801,37803,37805,37809,37811,37827,37829],[15,37802,10999],{"id":11005},[20,37804,11008],{},[11010,37806,37807],{},[20,37808,11014],{},[20,37810,11017],{},[161,37812,37813],{"icon":11020,"title":11021},[47,37814,37815],{"className":758,"code":11024,"language":761,"meta":55,"style":55},[39,37816,37817],{"__ignoreMap":55},[250,37818,37819,37821,37823,37825],{"class":252,"line":253},[250,37820,4226],{"class":774},[250,37822,808],{"class":782},[250,37824,862],{"class":782},[250,37826,11037],{"class":782},[20,37828,11040],{},[500,37830,11043],{},{"title":55,"searchDepth":110,"depth":110,"links":37832},[],{"type":12,"value":37834},[37835,37837],[15,37836,10999],{"id":11005},[20,37838,11008],{},[121,122,123,124,523,126],{},{"title":10999,"description":11047},"new-vue-default",{"id":11063,"title":11064,"author":37844,"body":37845,"canonical":115,"categories":115,"date":11098,"description":11099,"excerpt":37869,"extension":118,"img":119,"keywords":37875,"language":524,"meta":37876,"navigation":129,"ogImage":115,"path":11108,"rating":131,"readTime":275,"seo":37877,"stem":11110,"tag":11111,"__hash__":11112,"slug":37878},{"name":8,"website":9,"img":10},{"type":12,"value":37846,"toc":37865},[37847,37849,37851,37853,37857,37859,37861],[31,37848,11070],{"id":3506},[20,37850,11073],{},[20,37852,11076],{},[172,37854,37855],{},[20,37856,11081],{},[20,37858,11084],{},[31,37860,11088],{"id":11087},[10834,37862,37863],{},[20,37864,11093],{},{"title":55,"searchDepth":110,"depth":110,"links":37866},[37867,37868],{"id":3506,"depth":113,"text":11070},{"id":11087,"depth":113,"text":11088},{"type":12,"value":37870},[37871,37873],[31,37872,11070],{"id":3506},[20,37874,11073],{},[121,122,123,124,523,126],{},{"title":11064,"description":11099},"new-website",{"id":11114,"title":11115,"author":37880,"body":37881,"canonical":115,"categories":115,"date":11328,"description":11329,"excerpt":115,"extension":118,"img":11330,"keywords":38037,"language":3510,"meta":38038,"navigation":129,"ogImage":115,"path":11337,"rating":275,"readTime":275,"seo":38039,"stem":11339,"tag":3515,"__hash__":11340,"slug":38040},{"name":8,"img":10,"website":535},{"type":12,"value":37882,"toc":38029},[37883,37885,37893,37895,37897,37901,37903,37907,37909,37913,37915,37925,37937,37939,37941,37943,37945,37955,37959,37961,37963,37969,38027],[15,37884,541],{"id":540},[20,37886,11123,37887,11127,37889,11131,37891,11135],{},[546,37888,11126],{},[546,37890,11130],{},[546,37892,11134],{},[15,37894,748],{"id":747},[31,37896,11141],{"id":11140},[20,37898,11144,37899,2230],{},[546,37900,11147],{},[20,37902,11150],{},[24,37904,37905],{"type":631},[20,37906,11155],{},[31,37908,11159],{"id":11158},[20,37910,37911,11164],{},[546,37912,11130],{},[20,37914,11167],{},[561,37916,37917,37919,37921,37923],{},[564,37918,11172],{},[564,37920,11175],{},[564,37922,11178],{},[564,37924,11181],{},[10834,37926,37927,37929],{},[2459,37928,11187],{"id":11186},[561,37930,37931,37933,37935],{},[564,37932,11192],{},[564,37934,11195],{},[564,37936,11198],{},[20,37938,11201],{},[31,37940,11205],{"id":11204},[20,37942,11208],{},[20,37944,11211],{},[561,37946,37947,37949,37951,37953],{},[564,37948,11216],{},[564,37950,11219],{},[564,37952,11222],{},[564,37954,11225],{},[161,37956,37957],{"icon":11228,"title":11229},[20,37958,11232],{},[20,37960,11235],{},[31,37962,11239],{"id":11238},[20,37964,11242,37965,11246,37967,2230],{},[546,37966,11245],{},[546,37968,11249],{},[47,37970,37971],{"className":1010,"code":11252,"filename":11253,"language":1012,"meta":55,"style":55},[39,37972,37973,37983,37991,37999,38007,38011,38015],{"__ignoreMap":55},[250,37974,37975,37977,37979,37981],{"class":252,"line":253},[250,37976,1181],{"class":786},[250,37978,11262],{"class":778},[250,37980,1187],{"class":786},[250,37982,1118],{"class":912},[250,37984,37985,37987,37989],{"class":252,"line":113},[250,37986,11271],{"class":912},[250,37988,11274],{"class":782},[250,37990,927],{"class":912},[250,37992,37993,37995,37997],{"class":252,"line":110},[250,37994,11281],{"class":912},[250,37996,11284],{"class":782},[250,37998,927],{"class":912},[250,38000,38001,38003,38005],{"class":252,"line":269},[250,38002,11291],{"class":912},[250,38004,11294],{"class":782},[250,38006,927],{"class":912},[250,38008,38009],{"class":252,"line":275},[250,38010,10945],{"class":912},[250,38012,38013],{"class":252,"line":281},[250,38014,795],{"emptyLinePlaceholder":129},[250,38016,38017,38019,38021,38023,38025],{"class":252,"line":287},[250,38018,10954],{"class":912},[250,38020,1859],{"class":774},[250,38022,1434],{"class":912},[250,38024,11315],{"class":782},[250,38026,1885],{"class":912},[500,38028,10962],{},{"title":55,"searchDepth":110,"depth":110,"links":38030},[38031,38032,38035,38036],{"id":11140,"depth":113,"text":11141},{"id":11158,"depth":113,"text":11159,"children":38033},[38034],{"id":11186,"depth":110,"text":11187},{"id":11204,"depth":113,"text":11205},{"id":11238,"depth":113,"text":11239},[11332,11333,11334,10986,11335],{},{"title":11115,"description":11329},"new-year-new-code",{"id":11342,"title":11343,"author":38042,"body":38043,"canonical":115,"categories":115,"date":12010,"description":12011,"excerpt":38561,"extension":118,"img":12028,"keywords":38577,"language":3510,"meta":38578,"navigation":129,"ogImage":115,"path":12031,"rating":275,"readTime":132,"seo":38579,"stem":12033,"tag":3515,"__hash__":12034,"slug":38580},{"name":8,"img":10,"website":535},{"type":12,"value":38044,"toc":38541},[38045,38047,38055,38059,38061,38063,38067,38087,38091,38097,38099,38101,38103,38107,38131,38133,38138,38143,38145,38147,38159,38166,38168,38170,38176,38178,38182,38214,38221,38228,38230,38232,38237,38239,38297,38301,38303,38305,38310,38312,38360,38362,38396,38403,38405,38407,38414,38418,38420,38422,38426,38438,38445,38447,38466,38471,38473,38475,38481,38483,38485,38487,38494,38496,38504,38506,38508,38512,38537,38539],[15,38046,541],{"id":540},[20,38048,11351,38049,11355,38051,11358,38053],{},[546,38050,11354],{},[546,38052,555],{},[3540,38054,3543],{"index":3542},[20,38056,11363,38057,11367],{},[546,38058,11366],{},[15,38060,748],{"id":747},[31,38062,11373],{"id":11372},[20,38064,3555,38065,11378],{},[546,38066,555],{},[561,38068,38069,38073,38077,38081,38083],{},[564,38070,38071,11386],{},[546,38072,11385],{},[564,38074,38075,11392],{},[546,38076,11391],{},[564,38078,38079,11398],{},[546,38080,11397],{},[564,38082,11401],{},[564,38084,11404,38085],{},[3540,38086,3570],{"index":1198},[20,38088,11409,38089,11413],{},[546,38090,11412],{},[24,38092,38093],{"type":631},[20,38094,11418,38095],{},[3540,38096,3582],{"index":1226},[72,38098],{},[31,38100,11426],{"id":11425},[2459,38102,11430],{"id":11429},[20,38104,11433,38105],{},[3540,38106,3630],{"index":1249},[47,38108,38109],{"className":758,"code":11438,"language":761,"meta":55,"style":55},[39,38110,38111,38119,38125],{"__ignoreMap":55},[250,38112,38113,38115,38117],{"class":252,"line":253},[250,38114,4200],{"class":774},[250,38116,4203],{"class":782},[250,38118,11449],{"class":782},[250,38120,38121,38123],{"class":252,"line":113},[250,38122,874],{"class":778},[250,38124,11449],{"class":782},[250,38126,38127,38129],{"class":252,"line":110},[250,38128,4226],{"class":774},[250,38130,896],{"class":782},[20,38132,11464],{},[47,38134,38136],{"className":38135,"code":11468,"language":52},[50],[39,38137,11468],{"__ignoreMap":55},[20,38139,11473,38140,2390],{},[203,38141,555],{"href":11476,"rel":38142,"title":11478},[207],[2459,38144,11482],{"id":11481},[20,38146,11485],{},[47,38148,38149],{"className":758,"code":196,"language":761,"meta":55,"style":55},[39,38150,38151],{"__ignoreMap":55},[250,38152,38153,38155,38157],{"class":252,"line":253},[250,38154,4226],{"class":774},[250,38156,1707],{"class":782},[250,38158,1710],{"class":782},[20,38160,11500,38161,11504,38163,2390],{},[39,38162,11503],{},[203,38164,555],{"href":11476,"rel":38165,"title":11478},[207],[72,38167],{},[31,38169,11513],{"id":11512},[20,38171,11516,38172,11520,38174,11524],{},[546,38173,11519],{},[39,38175,11523],{},[2459,38177,11528],{"id":11527},[20,38179,11531,38180,1007],{},[39,38181,11534],{},[47,38183,38184],{"className":1010,"code":11537,"language":1012,"meta":55,"style":55},[39,38185,38186,38200,38210],{"__ignoreMap":55},[250,38187,38188,38190,38192,38194,38196,38198],{"class":252,"line":253},[250,38189,1019],{"class":786},[250,38191,1022],{"class":786},[250,38193,1109],{"class":774},[250,38195,1112],{"class":912},[250,38197,1115],{"class":786},[250,38199,1118],{"class":912},[250,38201,38202,38204,38206,38208],{"class":252,"line":113},[250,38203,1123],{"class":786},[250,38205,5773],{"class":912},[250,38207,11562],{"class":782},[250,38209,8690],{"class":912},[250,38211,38212],{"class":252,"line":110},[250,38213,474],{"class":912},[20,38215,11571,38216,11575,38218,2390],{},[39,38217,11574],{},[203,38219,555],{"href":11476,"rel":38220,"title":11478},[207],[20,38222,11581,38223,11584,38225,3698],{},[39,38224,11523],{},[203,38226,555],{"href":11476,"rel":38227,"title":11478},[207],[72,38229],{},[31,38231,11593],{"id":11592},[20,38233,11596,38234,2390],{},[203,38235,11602],{"href":11599,"rel":38236,"title":11601},[207],[2459,38238,11606],{"id":11605},[47,38240,38241],{"className":1010,"code":11609,"language":1012,"meta":55,"style":55},[39,38242,38243,38261,38277,38293],{"__ignoreMap":55},[250,38244,38245,38247,38249,38251,38253,38255,38257,38259],{"class":252,"line":253},[250,38246,1019],{"class":786},[250,38248,1022],{"class":786},[250,38250,1109],{"class":774},[250,38252,1574],{"class":912},[250,38254,1443],{"class":1370},[250,38256,1446],{"class":912},[250,38258,1115],{"class":786},[250,38260,1118],{"class":912},[250,38262,38263,38265,38267,38269,38271,38273,38275],{"class":252,"line":113},[250,38264,1455],{"class":786},[250,38266,7768],{"class":912},[250,38268,6563],{"class":778},[250,38270,11640],{"class":912},[250,38272,1416],{"class":786},[250,38274,11645],{"class":774},[250,38276,9077],{"class":912},[250,38278,38279,38281,38283,38285,38287,38289,38291],{"class":252,"line":110},[250,38280,1123],{"class":786},[250,38282,11654],{"class":912},[250,38284,11657],{"class":782},[250,38286,6563],{"class":912},[250,38288,11662],{"class":786},[250,38290,11665],{"class":782},[250,38292,8690],{"class":912},[250,38294,38295],{"class":252,"line":269},[250,38296,474],{"class":912},[20,38298,11571,38299,11677],{},[39,38300,11676],{},[72,38302],{},[31,38304,11683],{"id":11682},[20,38306,11686,38307,2390],{},[203,38308,555],{"href":11689,"rel":38309,"title":11691},[207],[2459,38311,11695],{"id":11694},[47,38313,38314],{"className":1010,"code":11698,"language":1012,"meta":55,"style":55},[39,38315,38316,38328,38332,38342,38346,38352,38356],{"__ignoreMap":55},[250,38317,38318,38320,38322,38324,38326],{"class":252,"line":253},[250,38319,1763],{"class":786},[250,38321,8904],{"class":912},[250,38323,1769],{"class":786},[250,38325,11711],{"class":782},[250,38327,1379],{"class":912},[250,38329,38330],{"class":252,"line":113},[250,38331,795],{"emptyLinePlaceholder":129},[250,38333,38334,38336,38338,38340],{"class":252,"line":110},[250,38335,1019],{"class":786},[250,38337,1022],{"class":786},[250,38339,8922],{"class":774},[250,38341,1028],{"class":912},[250,38343,38344],{"class":252,"line":269},[250,38345,8929],{"class":912},[250,38347,38348,38350],{"class":252,"line":275},[250,38349,11736],{"class":912},[250,38351,11739],{"class":782},[250,38353,38354],{"class":252,"line":281},[250,38355,986],{"class":912},[250,38357,38358],{"class":252,"line":287},[250,38359,1077],{"class":912},[20,38361,11750],{},[47,38363,38364],{"className":1010,"code":11753,"language":1012,"meta":55,"style":55},[39,38365,38366,38384,38392],{"__ignoreMap":55},[250,38367,38368,38370,38372,38374,38376,38378,38380,38382],{"class":252,"line":253},[250,38369,1019],{"class":786},[250,38371,1022],{"class":786},[250,38373,1109],{"class":774},[250,38375,1574],{"class":912},[250,38377,1443],{"class":1370},[250,38379,1446],{"class":912},[250,38381,1115],{"class":786},[250,38383,1118],{"class":912},[250,38385,38386,38388,38390],{"class":252,"line":113},[250,38387,1123],{"class":786},[250,38389,8988],{"class":774},[250,38391,11782],{"class":912},[250,38393,38394],{"class":252,"line":110},[250,38395,1077],{"class":912},[20,38397,11789,38398,11793,38400,2390],{},[39,38399,11792],{},[203,38401,555],{"href":11689,"rel":38402,"title":11691},[207],[72,38404],{},[31,38406,11802],{"id":11801},[20,38408,11805,38409,11809,38411,2390],{},[39,38410,11808],{},[203,38412,555],{"href":11812,"rel":38413,"title":11814},[207],[20,38415,11817,38416,11821],{},[546,38417,11820],{},[72,38419],{},[31,38421,11827],{"id":11826},[20,38423,11830,38424,11834],{},[546,38425,11833],{},[47,38427,38428],{"className":758,"code":10577,"language":761,"meta":55,"style":55},[39,38429,38430],{"__ignoreMap":55},[250,38431,38432,38434,38436],{"class":252,"line":253},[250,38433,4226],{"class":774},[250,38435,1707],{"class":782},[250,38437,3234],{"class":782},[20,38439,11849,38440,11852,38442,2390],{},[39,38441,10593],{},[203,38443,555],{"href":11476,"rel":38444,"title":11478},[207],[20,38446,11858],{},[561,38448,38449,38455,38459],{},[564,38450,38451,11865,38453],{},[546,38452,10599],{},[39,38454,11868],{},[564,38456,38457,11874],{},[546,38458,11873],{},[564,38460,38461,11880,38463,2390],{},[546,38462,11879],{},[203,38464,555],{"href":11883,"rel":38465,"title":11885},[207],[20,38467,11888,38468,2390],{},[203,38469,555],{"href":11883,"rel":38470,"title":11885},[207],[72,38472],{},[31,38474,11897],{"id":11896},[20,38476,11900,38477,11904,38479,11908],{},[546,38478,11903],{},[39,38480,11907],{},[20,38482,11911],{},[72,38484],{},[31,38486,11917],{"id":11916},[20,38488,11920,38489,11924,38491,2390],{},[546,38490,11923],{},[203,38492,555],{"href":11927,"rel":38493,"title":11929},[207],[20,38495,11932],{},[561,38497,38498,38500,38502],{},[564,38499,11937],{},[564,38501,11940],{},[564,38503,11943],{},[72,38505],{},[15,38507,3352],{"id":3351},[20,38509,38510,11952],{},[546,38511,555],{},[561,38513,38514,38518,38522,38526,38530],{},[564,38515,38516],{},[546,38517,11959],{},[564,38519,38520],{},[546,38521,11964],{},[564,38523,38524],{},[546,38525,11969],{},[564,38527,38528],{},[546,38529,11974],{},[564,38531,38532,1440,38534,2390],{},[546,38533,11979],{},[203,38535,555],{"href":11982,"rel":38536,"title":11984},[207],[20,38538,11987],{},[500,38540,9304],{},{"title":55,"searchDepth":110,"depth":110,"links":38542},[38543,38544,38548,38551,38554,38557,38558,38559,38560],{"id":11372,"depth":113,"text":11373},{"id":11425,"depth":113,"text":11426,"children":38545},[38546,38547],{"id":11429,"depth":110,"text":11430},{"id":11481,"depth":110,"text":11482},{"id":11512,"depth":113,"text":11513,"children":38549},[38550],{"id":11527,"depth":110,"text":11528},{"id":11592,"depth":113,"text":11593,"children":38552},[38553],{"id":11605,"depth":110,"text":11606},{"id":11682,"depth":113,"text":11683,"children":38555},[38556],{"id":11694,"depth":110,"text":11695},{"id":11801,"depth":113,"text":11802},{"id":11826,"depth":113,"text":11827},{"id":11896,"depth":113,"text":11897},{"id":11916,"depth":113,"text":11917},{"type":12,"value":38562},[38563,38565,38573],[15,38564,541],{"id":540},[20,38566,11351,38567,11355,38569,11358,38571],{},[546,38568,11354],{},[546,38570,555],{},[3540,38572,3543],{"index":3542},[20,38574,11363,38575,11367],{},[546,38576,11366],{},[3504,10784,126,3509,9373],{},{"title":11343,"description":12011},"nitro-build",{"id":12036,"title":12037,"author":38582,"body":38583,"canonical":115,"categories":115,"date":12640,"description":12641,"excerpt":39086,"extension":118,"img":12662,"keywords":39106,"language":3510,"meta":39107,"navigation":129,"ogImage":115,"path":12666,"rating":275,"readTime":293,"seo":39108,"stem":12668,"tag":3515,"__hash__":12669,"slug":39109},{"name":8,"img":10,"website":535},{"type":12,"value":38584,"toc":39073},[38585,38587,38593,38595,38603,38605,38607,38613,38615,38621,38623,38665,38671,38673,38679,38681,38763,38765,38843,38845,38847,38851,38853,38861,38863,38865,38869,38871,38975,38977,38979,38983,38985,38987,38989,38997,38999,39003,39005,39007,39041,39043,39047,39049,39051,39053,39055,39059,39061,39063,39065,39067,39071],[15,38586,541],{"id":540},[20,38588,12045,38589,12049,38591],{},[546,38590,12048],{},[250,38592,3570],{"index":1198},[20,38594,12054],{},[561,38596,38597,38599,38601],{},[564,38598,12059],{},[564,38600,12062],{},[564,38602,12065],{},[15,38604,748],{"id":747},[31,38606,12071],{"id":12070},[20,38608,12074,38609,12077,38611],{},[39,38610,11907],{},[250,38612,3582],{"index":1226},[31,38614,12083],{"id":12082},[20,38616,12086,38617,12090,38619,12093],{},[39,38618,12089],{},[39,38620,10277],{},[20,38622,12096],{},[47,38624,38625],{"className":1010,"code":12099,"language":1012,"meta":55,"style":55},[39,38626,38627,38631,38649,38661],{"__ignoreMap":55},[250,38628,38629],{"class":252,"line":253},[250,38630,12106],{"class":768},[250,38632,38633,38635,38637,38639,38641,38643,38645,38647],{"class":252,"line":113},[250,38634,1019],{"class":786},[250,38636,1022],{"class":786},[250,38638,10272],{"class":774},[250,38640,1574],{"class":912},[250,38642,10277],{"class":1370},[250,38644,1446],{"class":912},[250,38646,1115],{"class":786},[250,38648,1118],{"class":912},[250,38650,38651,38653,38655,38657,38659],{"class":252,"line":110},[250,38652,1856],{"class":912},[250,38654,1859],{"class":774},[250,38656,1434],{"class":912},[250,38658,12135],{"class":782},[250,38660,4852],{"class":912},[250,38662,38663],{"class":252,"line":269},[250,38664,474],{"class":912},[20,38666,12144,38667,12147,38669,2390],{},[39,38668,8892],{},[250,38670,1226],{},[31,38672,12153],{"id":12152},[20,38674,12156,38675,12160,38677,2390],{},[546,38676,12159],{},[250,38678,1226],{},[20,38680,12165],{},[47,38682,38683],{"className":1010,"code":12168,"language":1012,"meta":55,"style":55},[39,38684,38685,38689,38707,38727,38755,38759],{"__ignoreMap":55},[250,38686,38687],{"class":252,"line":253},[250,38688,12175],{"class":768},[250,38690,38691,38693,38695,38697,38699,38701,38703,38705],{"class":252,"line":113},[250,38692,1019],{"class":786},[250,38694,1022],{"class":786},[250,38696,10272],{"class":774},[250,38698,1574],{"class":912},[250,38700,10277],{"class":1370},[250,38702,1446],{"class":912},[250,38704,1115],{"class":786},[250,38706,1118],{"class":912},[250,38708,38709,38711,38713,38715,38717,38719,38721,38723,38725],{"class":252,"line":110},[250,38710,10288],{"class":912},[250,38712,10291],{"class":774},[250,38714,1434],{"class":912},[250,38716,10296],{"class":782},[250,38718,10299],{"class":912},[250,38720,1443],{"class":1370},[250,38722,1446],{"class":912},[250,38724,1115],{"class":786},[250,38726,1118],{"class":912},[250,38728,38729,38731,38733,38735,38737,38739,38741,38743,38745,38747,38749,38751,38753],{"class":252,"line":269},[250,38730,10312],{"class":912},[250,38732,1859],{"class":774},[250,38734,1434],{"class":912},[250,38736,12224],{"class":782},[250,38738,1443],{"class":912},[250,38740,2230],{"class":782},[250,38742,10342],{"class":912},[250,38744,10345],{"class":782},[250,38746,1443],{"class":912},[250,38748,2230],{"class":782},[250,38750,10352],{"class":912},[250,38752,2355],{"class":782},[250,38754,4852],{"class":912},[250,38756,38757],{"class":252,"line":275},[250,38758,10365],{"class":912},[250,38760,38761],{"class":252,"line":281},[250,38762,474],{"class":912},[20,38764,12253],{},[47,38766,38767],{"className":1010,"code":12256,"language":1012,"meta":55,"style":55},[39,38768,38769,38773,38791,38815,38835,38839],{"__ignoreMap":55},[250,38770,38771],{"class":252,"line":253},[250,38772,12263],{"class":768},[250,38774,38775,38777,38779,38781,38783,38785,38787,38789],{"class":252,"line":113},[250,38776,1019],{"class":786},[250,38778,1022],{"class":786},[250,38780,10272],{"class":774},[250,38782,1574],{"class":912},[250,38784,10277],{"class":1370},[250,38786,1446],{"class":912},[250,38788,1115],{"class":786},[250,38790,1118],{"class":912},[250,38792,38793,38795,38797,38799,38801,38803,38805,38807,38809,38811,38813],{"class":252,"line":110},[250,38794,10288],{"class":912},[250,38796,10291],{"class":774},[250,38798,1434],{"class":912},[250,38800,12292],{"class":782},[250,38802,10299],{"class":912},[250,38804,12297],{"class":1370},[250,38806,12300],{"class":912},[250,38808,1443],{"class":1370},[250,38810,12305],{"class":912},[250,38812,1115],{"class":786},[250,38814,1118],{"class":912},[250,38816,38817,38819,38821,38823,38825,38827,38829,38831,38833],{"class":252,"line":269},[250,38818,10312],{"class":912},[250,38820,12297],{"class":774},[250,38822,1434],{"class":912},[250,38824,12320],{"class":782},[250,38826,1443],{"class":912},[250,38828,2230],{"class":782},[250,38830,10352],{"class":912},[250,38832,12329],{"class":782},[250,38834,12332],{"class":912},[250,38836,38837],{"class":252,"line":275},[250,38838,10365],{"class":912},[250,38840,38841],{"class":252,"line":281},[250,38842,474],{"class":912},[31,38844,12344],{"id":12343},[20,38846,12347],{},[2459,38848,12351,38849],{"id":12350},[546,38850,12354],{},[20,38852,12357],{},[561,38854,38855,38857,38859],{},[564,38856,12362],{},[564,38858,12365],{},[564,38860,12368],{},[20,38862,12371],{},[72,38864],{},[2459,38866,12377,38867],{"id":12376},[546,38868,12380],{},[20,38870,12383],{},[47,38872,38873],{"className":1010,"code":12386,"language":1012,"meta":55,"style":55},[39,38874,38875,38879,38897,38917,38935,38947,38963,38967,38971],{"__ignoreMap":55},[250,38876,38877],{"class":252,"line":253},[250,38878,12393],{"class":768},[250,38880,38881,38883,38885,38887,38889,38891,38893,38895],{"class":252,"line":113},[250,38882,1019],{"class":786},[250,38884,1022],{"class":786},[250,38886,10272],{"class":774},[250,38888,1574],{"class":912},[250,38890,10277],{"class":1370},[250,38892,1446],{"class":912},[250,38894,1115],{"class":786},[250,38896,1118],{"class":912},[250,38898,38899,38901,38903,38905,38907,38909,38911,38913,38915],{"class":252,"line":110},[250,38900,10288],{"class":912},[250,38902,10291],{"class":774},[250,38904,1434],{"class":912},[250,38906,10296],{"class":782},[250,38908,10299],{"class":912},[250,38910,1443],{"class":1370},[250,38912,1446],{"class":912},[250,38914,1115],{"class":786},[250,38916,1118],{"class":912},[250,38918,38919,38921,38923,38925,38927,38929,38931,38933],{"class":252,"line":269},[250,38920,6403],{"class":786},[250,38922,10497],{"class":778},[250,38924,1187],{"class":786},[250,38926,10502],{"class":912},[250,38928,6062],{"class":774},[250,38930,1434],{"class":912},[250,38932,10509],{"class":782},[250,38934,4852],{"class":912},[250,38936,38937,38939,38941,38943,38945],{"class":252,"line":275},[250,38938,6463],{"class":786},[250,38940,1440],{"class":912},[250,38942,1491],{"class":786},[250,38944,12460],{"class":774},[250,38946,12463],{"class":912},[250,38948,38949,38951,38953,38955,38957,38959,38961],{"class":252,"line":281},[250,38950,6475],{"class":786},[250,38952,1520],{"class":774},[250,38954,10172],{"class":912},[250,38956,10538],{"class":778},[250,38958,10177],{"class":912},[250,38960,10543],{"class":782},[250,38962,4599],{"class":912},[250,38964,38965],{"class":252,"line":287},[250,38966,3684],{"class":912},[250,38968,38969],{"class":252,"line":293},[250,38970,10365],{"class":912},[250,38972,38973],{"class":252,"line":299},[250,38974,474],{"class":912},[20,38976,12494],{},[72,38978],{},[2459,38980,12500,38981],{"id":12499},[546,38982,12503],{},[20,38984,12506],{},[20,38986,12509],{},[20,38988,12512],{},[561,38990,38991,38993,38995],{},[564,38992,12517],{},[564,38994,12520],{},[564,38996,12523],{},[72,38998],{},[2459,39000,12529,39001],{"id":12528},[546,39002,12532],{},[20,39004,12535],{},[20,39006,12538],{},[47,39008,39009],{"className":1010,"code":12541,"language":1012,"meta":55,"style":55},[39,39010,39011,39031,39037],{"__ignoreMap":55},[250,39012,39013,39015,39017,39019,39021,39023,39025,39027,39029],{"class":252,"line":253},[250,39014,12548],{"class":912},[250,39016,10291],{"class":774},[250,39018,1434],{"class":912},[250,39020,10296],{"class":782},[250,39022,10299],{"class":912},[250,39024,1443],{"class":1370},[250,39026,1446],{"class":912},[250,39028,1115],{"class":786},[250,39030,1118],{"class":912},[250,39032,39033,39035],{"class":252,"line":113},[250,39034,12569],{"class":774},[250,39036,12572],{"class":912},[250,39038,39039],{"class":252,"line":110},[250,39040,474],{"class":912},[72,39042],{},[2459,39044,12582,39045],{"id":12581},[546,39046,12585],{},[20,39048,12588],{},[20,39050,12591],{},[72,39052],{},[31,39054,12597],{"id":12596},[20,39056,12600,39057,2390],{},[250,39058,1198],{},[72,39060],{},[15,39062,3352],{"id":3351},[20,39064,12609],{},[20,39066,12612],{},[20,39068,12615,39069,1491],{},[546,39070,12618],{},[500,39072,12621],{},{"title":55,"searchDepth":110,"depth":110,"links":39074},[39075,39076,39077,39078,39085],{"id":12070,"depth":113,"text":12071},{"id":12082,"depth":113,"text":12083},{"id":12152,"depth":113,"text":12153},{"id":12343,"depth":113,"text":12344,"children":39079},[39080,39081,39082,39083,39084],{"id":12350,"depth":110,"text":12630},{"id":12376,"depth":110,"text":12632},{"id":12499,"depth":110,"text":12634},{"id":12528,"depth":110,"text":12636},{"id":12581,"depth":110,"text":12638},{"id":12596,"depth":113,"text":12597},{"type":12,"value":39087},[39088,39090,39096,39098],[15,39089,541],{"id":540},[20,39091,12045,39092,12049,39094],{},[546,39093,12048],{},[250,39095,3570],{"index":1198},[20,39097,12054],{},[561,39099,39100,39102,39104],{},[564,39101,12059],{},[564,39103,12062],{},[564,39105,12065],{},[3504,12664,3507,3509,8234],{},{"title":12037,"description":12641},"nitro-plugins",{"id":12671,"title":12672,"author":39111,"body":39112,"canonical":115,"categories":115,"date":12959,"description":12960,"excerpt":39309,"extension":118,"img":12662,"keywords":39337,"language":3510,"meta":39338,"navigation":129,"ogImage":115,"path":12991,"rating":275,"readTime":316,"seo":39339,"stem":12993,"tag":3515,"__hash__":12994,"slug":39340},{"name":8,"img":10,"website":535},{"type":12,"value":39113,"toc":39298},[39114,39116,39122,39124,39134,39140,39142,39144,39176,39178,39180,39182,39187,39189,39191,39193,39195,39197,39199,39201,39203,39205,39207,39211,39213,39218,39220,39222,39224,39226,39228,39230,39232,39234,39239,39241,39243,39248,39250,39252,39254,39256,39258,39260,39262,39264,39266,39268,39270,39272,39274,39276,39278,39280,39282,39284,39286,39288,39290,39292,39294,39296],[15,39115,541],{"id":540},[20,39117,12680,39118,12684,39120,12688],{},[546,39119,12683],{},[546,39121,12687],{},[20,39123,12691],{},[561,39125,39126,39128,39130,39132],{},[564,39127,12696],{},[564,39129,12699],{},[564,39131,12702],{},[564,39133,12705],{},[20,39135,12708,39136,12711,39138,12715],{},[546,39137,3510],{},[546,39139,12714],{},[15,39141,12719],{"id":12718},[20,39143,12722],{},[47,39145,39146],{"className":12725,"code":12726,"language":12727,"meta":55,"style":55},[39,39147,39148,39152,39156,39160,39164,39168,39172],{"__ignoreMap":55},[250,39149,39150],{"class":252,"line":253},[250,39151,12734],{},[250,39153,39154],{"class":252,"line":113},[250,39155,12739],{},[250,39157,39158],{"class":252,"line":110},[250,39159,12744],{},[250,39161,39162],{"class":252,"line":269},[250,39163,12749],{},[250,39165,39166],{"class":252,"line":275},[250,39167,12754],{},[250,39169,39170],{"class":252,"line":281},[250,39171,12759],{},[250,39173,39174],{"class":252,"line":287},[250,39175,12764],{},[15,39177,12768],{"id":12767},[20,39179,12771],{},[20,39181,12774],{},[47,39183,39185],{"className":39184,"code":12778,"language":52},[50],[39,39186,12778],{"__ignoreMap":55},[20,39188,12783],{},[31,39190,12787],{"id":12786},[20,39192,12790],{},[20,39194,12793],{},[20,39196,12796],{},[20,39198,12799],{},[20,39200,12802],{},[20,39202,12805],{},[31,39204,12809],{"id":12808},[20,39206,12812],{},[20,39208,12815,39209,2390],{},[250,39210,12818],{},[20,39212,12821],{},[47,39214,39216],{"className":39215,"code":12825,"language":52},[50],[39,39217,12825],{"__ignoreMap":55},[20,39219,12783],{},[31,39221,12833],{"id":12832},[20,39223,12836],{},[20,39225,12839],{},[20,39227,12842],{},[31,39229,12846],{"id":12845},[20,39231,12849],{},[20,39233,12852],{},[47,39235,39237],{"className":39236,"code":12856,"language":52},[50],[39,39238,12856],{"__ignoreMap":55},[20,39240,12861],{},[20,39242,12864],{},[47,39244,39246],{"className":39245,"code":12868,"language":52},[50],[39,39247,12868],{"__ignoreMap":55},[20,39249,12783],{},[31,39251,12876],{"id":12875},[20,39253,12879],{},[20,39255,12882],{},[20,39257,12885],{},[31,39259,12889],{"id":12888},[20,39261,12892],{},[20,39263,12895],{},[20,39265,12898],{},[31,39267,12902],{"id":12901},[20,39269,12905],{},[20,39271,12908],{},[20,39273,12911],{},[31,39275,12915],{"id":12914},[20,39277,12918],{},[20,39279,12921],{},[31,39281,12925],{"id":12924},[20,39283,12928],{},[20,39285,12931],{},[20,39287,12934],{},[20,39289,12937],{},[15,39291,3352],{"id":3351},[20,39293,12942],{},[20,39295,12945],{},[500,39297,502],{},{"title":55,"searchDepth":110,"depth":110,"links":39299},[39300,39301,39302,39303,39304,39305,39306,39307,39308],{"id":12786,"depth":113,"text":12787},{"id":12808,"depth":113,"text":12809},{"id":12832,"depth":113,"text":12833},{"id":12845,"depth":113,"text":12846},{"id":12875,"depth":113,"text":12876},{"id":12888,"depth":113,"text":12889},{"id":12901,"depth":113,"text":12902},{"id":12914,"depth":113,"text":12915},{"id":12924,"depth":113,"text":12925},{"type":12,"value":39310},[39311,39313,39319,39321,39331],[15,39312,541],{"id":540},[20,39314,12680,39315,12684,39317,12688],{},[546,39316,12683],{},[546,39318,12687],{},[20,39320,12691],{},[561,39322,39323,39325,39327,39329],{},[564,39324,12696],{},[564,39326,12699],{},[564,39328,12702],{},[564,39330,12705],{},[20,39332,12708,39333,12711,39335,12715],{},[546,39334,3510],{},[546,39336,12714],{},[3504,11903,3507,3508,8234],{},{"title":12672,"description":12960},"nitro-tutorial",{"id":12996,"title":12997,"author":39342,"body":39343,"canonical":115,"categories":115,"date":13728,"description":13729,"excerpt":39914,"extension":118,"img":12028,"keywords":39928,"language":3510,"meta":39929,"navigation":129,"ogImage":115,"path":13750,"rating":275,"readTime":132,"seo":39930,"stem":13752,"tag":3515,"__hash__":13753,"slug":39931},{"name":8,"img":10,"website":535},{"type":12,"value":39344,"toc":39893},[39345,39347,39353,39357,39359,39361,39365,39375,39377,39381,39383,39385,39391,39393,39395,39403,39405,39509,39511,39513,39515,39517,39527,39529,39531,39533,39535,39537,39541,39543,39551,39553,39561,39563,39565,39567,39571,39603,39605,39613,39615,39617,39619,39623,39631,39633,39635,39637,39641,39643,39651,39683,39685,39687,39689,39691,39693,39845,39847,39855,39857,39859,39861,39863,39877,39879,39881,39883,39885,39889,39891],[15,39346,541],{"id":540},[20,39348,13005,39349,13009,39351,13013],{},[546,39350,13008],{},[546,39352,13012],{},[20,39354,13016,39355,2230],{},[546,39356,13019],{},[15,39358,748],{"id":747},[31,39360,13025],{"id":13024},[20,39362,13028,39363,13032],{},[546,39364,13031],{},[561,39366,39367,39369,39371,39373],{},[564,39368,13037],{},[564,39370,13040],{},[564,39372,13043],{},[564,39374,13046],{},[20,39376,13049],{},[24,39378,39379],{"type":631},[20,39380,13054],{},[72,39382],{},[31,39384,13060],{"id":13059},[20,39386,13063,39387,13067,39389,2230],{},[546,39388,13066],{},[39,39390,13070],{},[20,39392,13073],{},[2459,39394,12902],{"id":12901},[561,39396,39397,39399,39401],{},[564,39398,13080],{},[564,39400,13083],{},[564,39402,13086],{},[31,39404,13090],{"id":13089},[47,39406,39407],{"className":1010,"code":13093,"filename":13094,"language":1012,"meta":55,"style":55},[39,39408,39409,39421,39435,39439,39463,39473,39477,39481,39485,39489,39493,39501],{"__ignoreMap":55},[250,39410,39411,39413,39415,39417,39419],{"class":252,"line":253},[250,39412,1962],{"class":786},[250,39414,13103],{"class":912},[250,39416,1416],{"class":786},[250,39418,13108],{"class":782},[250,39420,13111],{"class":786},[250,39422,39423,39425,39427,39429,39431,39433],{"class":252,"line":113},[250,39424,1181],{"class":786},[250,39426,13118],{"class":778},[250,39428,1187],{"class":786},[250,39430,1568],{"class":786},[250,39432,13125],{"class":774},[250,39434,4861],{"class":912},[250,39436,39437],{"class":252,"line":110},[250,39438,795],{"emptyLinePlaceholder":129},[250,39440,39441,39443,39445,39447,39449,39451,39453,39455,39457,39459,39461],{"class":252,"line":269},[250,39442,1181],{"class":786},[250,39444,7768],{"class":912},[250,39446,13140],{"class":778},[250,39448,11640],{"class":912},[250,39450,1416],{"class":786},[250,39452,1463],{"class":786},[250,39454,13149],{"class":774},[250,39456,1434],{"class":912},[250,39458,13154],{"class":782},[250,39460,13157],{"class":912},[250,39462,13160],{"class":786},[250,39464,39465,39467,39469,39471],{"class":252,"line":275},[250,39466,13165],{"class":774},[250,39468,1434],{"class":912},[250,39470,13170],{"class":782},[250,39472,4454],{"class":912},[250,39474,39475],{"class":252,"line":281},[250,39476,13177],{"class":912},[250,39478,39479],{"class":252,"line":287},[250,39480,10365],{"class":912},[250,39482,39483],{"class":252,"line":293},[250,39484,4852],{"class":912},[250,39486,39487],{"class":252,"line":299},[250,39488,795],{"emptyLinePlaceholder":129},[250,39490,39491],{"class":252,"line":132},[250,39492,13194],{"class":768},[250,39494,39495,39497,39499],{"class":252,"line":310},[250,39496,13199],{"class":912},[250,39498,13202],{"class":774},[250,39500,4861],{"class":912},[250,39502,39503,39505,39507],{"class":252,"line":316},[250,39504,13209],{"class":786},[250,39506,13212],{"class":912},[250,39508,13111],{"class":786},[20,39510,13217],{},[72,39512],{},[31,39514,13223],{"id":13222},[20,39516,13226],{},[561,39518,39519,39523],{},[564,39520,13231,39521,13235],{},[546,39522,13234],{},[564,39524,13238,39525,13242],{},[546,39526,13241],{},[20,39528,13245],{},[20,39530,13248],{},[72,39532],{},[31,39534,13254],{"id":13253},[20,39536,13257],{},[20,39538,13260,39539,13264],{},[546,39540,13263],{},[2459,39542,13268],{"id":13267},[561,39544,39545,39547,39549],{},[564,39546,13273],{},[564,39548,13276],{},[564,39550,13279],{},[2459,39552,13283],{"id":13282},[561,39554,39555,39557,39559],{},[564,39556,13288],{},[564,39558,13291],{},[564,39560,13294],{},[20,39562,13297],{},[72,39564],{},[31,39566,13303],{"id":13302},[20,39568,13306,39569,13310],{},[546,39570,13309],{},[47,39572,39573],{"className":1010,"code":13313,"language":1012,"meta":55,"style":55},[39,39574,39575,39585,39589,39595,39599],{"__ignoreMap":55},[250,39576,39577,39579,39581,39583],{"class":252,"line":253},[250,39578,1019],{"class":786},[250,39580,1022],{"class":786},[250,39582,1025],{"class":774},[250,39584,1028],{"class":912},[250,39586,39587],{"class":252,"line":113},[250,39588,13330],{"class":912},[250,39590,39591,39593],{"class":252,"line":110},[250,39592,13335],{"class":912},[250,39594,13338],{"class":778},[250,39596,39597],{"class":252,"line":269},[250,39598,986],{"class":912},[250,39600,39601],{"class":252,"line":275},[250,39602,474],{"class":912},[20,39604,13349],{},[561,39606,39607,39609,39611],{},[564,39608,13354],{},[564,39610,13357],{},[564,39612,13360],{},[20,39614,13363],{},[72,39616],{},[31,39618,13369],{"id":13368},[20,39620,13372,39621,13375],{},[546,39622,555],{},[561,39624,39625,39627,39629],{},[564,39626,13380],{},[564,39628,13383],{},[564,39630,13386],{},[20,39632,13389],{},[72,39634],{},[31,39636,13395],{"id":13394},[20,39638,13398,39639,13402],{},[546,39640,13401],{},[2459,39642,13406],{"id":13405},[561,39644,39645,39647,39649],{},[564,39646,13411],{},[564,39648,13414],{},[564,39650,13417],{},[47,39652,39653],{"className":1010,"code":13420,"language":1012,"meta":55,"style":55},[39,39654,39655,39665,39669,39675,39679],{"__ignoreMap":55},[250,39656,39657,39659,39661,39663],{"class":252,"line":253},[250,39658,1019],{"class":786},[250,39660,1022],{"class":786},[250,39662,1025],{"class":774},[250,39664,1028],{"class":912},[250,39666,39667],{"class":252,"line":113},[250,39668,13330],{"class":912},[250,39670,39671,39673],{"class":252,"line":110},[250,39672,13441],{"class":912},[250,39674,13338],{"class":778},[250,39676,39677],{"class":252,"line":269},[250,39678,986],{"class":912},[250,39680,39681],{"class":252,"line":275},[250,39682,474],{"class":912},[20,39684,13454],{},[72,39686],{},[31,39688,13460],{"id":13459},[20,39690,13463],{},[31,39692,13090],{"id":13466},[47,39694,39695],{"className":1010,"code":13469,"filename":13470,"language":1012,"meta":55,"style":55},[39,39696,39697,39709,39725,39739,39743,39757,39765,39777,39781,39789,39797,39803,39821,39825,39829,39833,39837],{"__ignoreMap":55},[250,39698,39699,39701,39703,39705,39707],{"class":252,"line":253},[250,39700,1962],{"class":786},[250,39702,13103],{"class":912},[250,39704,1416],{"class":786},[250,39706,13108],{"class":782},[250,39708,13111],{"class":786},[250,39710,39711,39713,39715,39717,39719,39721,39723],{"class":252,"line":113},[250,39712,1181],{"class":786},[250,39714,13491],{"class":778},[250,39716,1187],{"class":786},[250,39718,13496],{"class":774},[250,39720,1434],{"class":912},[250,39722,13501],{"class":782},[250,39724,4852],{"class":912},[250,39726,39727,39729,39731,39733,39735,39737],{"class":252,"line":110},[250,39728,1949],{"class":786},[250,39730,13510],{"class":912},[250,39732,1416],{"class":786},[250,39734,1568],{"class":786},[250,39736,13125],{"class":774},[250,39738,4861],{"class":912},[250,39740,39741],{"class":252,"line":269},[250,39742,795],{"emptyLinePlaceholder":129},[250,39744,39745,39747,39749,39751,39753,39755],{"class":252,"line":275},[250,39746,13527],{"class":774},[250,39748,13530],{"class":912},[250,39750,1437],{"class":786},[250,39752,2015],{"class":912},[250,39754,1115],{"class":786},[250,39756,1118],{"class":912},[250,39758,39759,39761,39763],{"class":252,"line":281},[250,39760,13543],{"class":912},[250,39762,13202],{"class":774},[250,39764,4861],{"class":912},[250,39766,39767,39769,39771,39773,39775],{"class":252,"line":287},[250,39768,13552],{"class":912},[250,39770,1416],{"class":786},[250,39772,1568],{"class":786},[250,39774,13125],{"class":774},[250,39776,4861],{"class":912},[250,39778,39779],{"class":252,"line":293},[250,39780,795],{"emptyLinePlaceholder":129},[250,39782,39783,39785,39787],{"class":252,"line":299},[250,39784,1565],{"class":786},[250,39786,13149],{"class":774},[250,39788,1982],{"class":912},[250,39790,39791,39793,39795],{"class":252,"line":132},[250,39792,13577],{"class":912},[250,39794,13580],{"class":782},[250,39796,13583],{"class":912},[250,39798,39799,39801],{"class":252,"line":310},[250,39800,13588],{"class":912},[250,39802,13160],{"class":786},[250,39804,39805,39807,39809,39811,39813,39815,39817,39819],{"class":252,"line":316},[250,39806,13595],{"class":774},[250,39808,1434],{"class":912},[250,39810,13600],{"class":782},[250,39812,13603],{"class":912},[250,39814,2230],{"class":782},[250,39816,13608],{"class":912},[250,39818,2355],{"class":782},[250,39820,4454],{"class":912},[250,39822,39823],{"class":252,"line":322},[250,39824,13617],{"class":912},[250,39826,39827],{"class":252,"line":328},[250,39828,2204],{"class":912},[250,39830,39831],{"class":252,"line":334},[250,39832,10040],{"class":912},[250,39834,39835],{"class":252,"line":340},[250,39836,474],{"class":912},[250,39838,39839,39841,39843],{"class":252,"line":346},[250,39840,13209],{"class":786},[250,39842,13212],{"class":912},[250,39844,13111],{"class":786},[20,39846,13640],{},[561,39848,39849,39851,39853],{},[564,39850,13645],{},[564,39852,13648],{},[564,39854,13651],{},[20,39856,13654],{},[72,39858],{},[31,39860,13660],{"id":13659},[20,39862,13663],{},[561,39864,39865,39869,39873,39875],{},[564,39866,13668,39867],{},[546,39868,13671],{},[564,39870,13674,39871],{},[546,39872,13677],{},[564,39874,13680],{},[564,39876,13683],{},[20,39878,13686],{},[72,39880],{},[31,39882,3352],{"id":3351},[20,39884,13693],{},[20,39886,13696,39887,13700],{},[546,39888,13699],{},[20,39890,13703],{},[500,39892,13706],{},{"title":55,"searchDepth":110,"depth":110,"links":39894},[39895,39896,39899,39900,39901,39905,39906,39907,39910,39911,39912,39913],{"id":13024,"depth":113,"text":13025},{"id":13059,"depth":113,"text":13060,"children":39897},[39898],{"id":12901,"depth":110,"text":12902},{"id":13089,"depth":113,"text":13090},{"id":13222,"depth":113,"text":13223},{"id":13253,"depth":113,"text":13254,"children":39902},[39903,39904],{"id":13267,"depth":110,"text":13268},{"id":13282,"depth":110,"text":13283},{"id":13302,"depth":113,"text":13303},{"id":13368,"depth":113,"text":13369},{"id":13394,"depth":113,"text":13395,"children":39908},[39909],{"id":13405,"depth":110,"text":13406},{"id":13459,"depth":113,"text":13460},{"id":13466,"depth":113,"text":13090},{"id":13659,"depth":113,"text":13660},{"id":3351,"depth":113,"text":3352},{"type":12,"value":39915},[39916,39918,39924],[15,39917,541],{"id":540},[20,39919,13005,39920,13009,39922,13013],{},[546,39921,13008],{},[546,39923,13012],{},[20,39925,13016,39926,2230],{},[546,39927,13019],{},[13745,13746,13747,3504,126,13748],{},{"title":12997,"description":13729},"nuxt-42-steady-movements-to-5",{"id":13755,"title":13756,"author":39933,"body":39934,"canonical":115,"categories":115,"date":3470,"description":18676,"excerpt":44404,"extension":118,"img":3502,"keywords":44432,"language":3510,"meta":44433,"navigation":129,"ogImage":115,"path":18713,"rating":275,"readTime":334,"seo":44434,"stem":18715,"tag":3515,"__hash__":18716,"slug":44435},{"name":8,"img":10,"website":535},{"type":12,"value":39935,"toc":44385},[39936,39938,39940,39944,39960,39962,39964,39966,39968,40020,40024,40026,40028,40030,40056,40058,40084,40092,40094,40096,40098,40102,40212,40218,40222,40242,40244,40246,40248,40252,40674,40678,40680,40682,40684,40688,41054,41058,41206,41208,41210,41212,41216,41550,41552,41556,41844,41846,41850,41900,41902,41906,42180,42182,42184,42186,42190,42540,42544,42546,42548,42550,42555,42559,42579,42583,42705,42709,42799,42801,42803,42807,43393,43397,43967,43969,43971,43973,44207,44209,44211,44213,44253,44255,44257,44321,44323,44325,44327,44349,44351,44369,44371,44381,44383],[15,39937,541],{"id":540},[20,39939,13764],{},[20,39941,13767,39942,1007],{},[546,39943,13008],{},[561,39945,39946,39948,39950,39952,39954,39956,39958],{},[564,39947,13774],{},[564,39949,13777],{},[564,39951,13780],{},[564,39953,13783],{},[564,39955,13786],{},[564,39957,13789],{},[564,39959,13792],{},[20,39961,13795],{},[15,39963,748],{"id":747},[31,39965,13801],{"id":13800},[20,39967,13804],{},[645,39969,39970,39982],{},[648,39971,39972],{},[651,39973,39974,39976,39978,39980],{},[654,39975,13813],{},[654,39977,13816],{},[654,39979,13819],{},[654,39981,13822],{},[666,39983,39984,39996,40008],{},[651,39985,39986,39990,39992,39994],{},[671,39987,39988],{},[546,39989,13831],{},[671,39991,13834],{},[671,39993,13837],{},[671,39995,13840],{},[651,39997,39998,40002,40004,40006],{},[671,39999,40000],{},[546,40001,13847],{},[671,40003,13850],{},[671,40005,13853],{},[671,40007,13856],{},[651,40009,40010,40014,40016,40018],{},[671,40011,40012],{},[546,40013,13863],{},[671,40015,13866],{},[671,40017,13869],{},[671,40019,13872],{},[24,40021,40022],{"type":631},[20,40023,13877],{},[72,40025],{},[31,40027,4182],{"id":4181},[20,40029,13884],{},[47,40031,40032],{"className":758,"code":13887,"filename":760,"language":761,"meta":55,"style":55},[39,40033,40034,40044,40050],{"__ignoreMap":55},[250,40035,40036,40038,40040,40042],{"class":252,"line":253},[250,40037,4200],{"class":774},[250,40039,859],{"class":782},[250,40041,862],{"class":782},[250,40043,13900],{"class":782},[250,40045,40046,40048],{"class":252,"line":113},[250,40047,874],{"class":778},[250,40049,13900],{"class":782},[250,40051,40052,40054],{"class":252,"line":110},[250,40053,4226],{"class":774},[250,40055,896],{"class":782},[20,40057,13915],{},[47,40059,40060],{"className":758,"code":13918,"filename":760,"language":761,"meta":55,"style":55},[39,40061,40062,40074],{"__ignoreMap":55},[250,40063,40064,40066,40068,40070,40072],{"class":252,"line":253},[250,40065,4226],{"class":774},[250,40067,808],{"class":782},[250,40069,13929],{"class":782},[250,40071,13932],{"class":782},[250,40073,13935],{"class":782},[250,40075,40076,40078,40080,40082],{"class":252,"line":113},[250,40077,4226],{"class":774},[250,40079,808],{"class":782},[250,40081,4243],{"class":778},[250,40083,13946],{"class":782},[161,40085,40086],{"icon":13949,"title":13950},[20,40087,13953,40088,13957,40090,13961],{},[39,40089,13956],{},[39,40091,13960],{},[72,40093],{},[31,40095,13967],{"id":13966},[20,40097,13970],{},[20,40099,1092,40100,1007],{},[39,40101,1006],{},[47,40103,40104],{"className":1010,"code":13977,"filename":1006,"language":1012,"meta":55,"style":55},[39,40105,40106,40116,40124,40128,40132,40136,40144,40152,40156,40164,40168,40172,40176,40184,40188,40200,40204,40208],{"__ignoreMap":55},[250,40107,40108,40110,40112,40114],{"class":252,"line":253},[250,40109,1019],{"class":786},[250,40111,1022],{"class":786},[250,40113,1025],{"class":774},[250,40115,1028],{"class":912},[250,40117,40118,40120,40122],{"class":252,"line":113},[250,40119,13994],{"class":912},[250,40121,13997],{"class":782},[250,40123,14000],{"class":912},[250,40125,40126],{"class":252,"line":110},[250,40127,1053],{"class":912},[250,40129,40130],{"class":252,"line":269},[250,40131,14009],{"class":912},[250,40133,40134],{"class":252,"line":275},[250,40135,14014],{"class":912},[250,40137,40138,40140,40142],{"class":252,"line":281},[250,40139,14019],{"class":912},[250,40141,14022],{"class":782},[250,40143,927],{"class":912},[250,40145,40146,40148,40150],{"class":252,"line":287},[250,40147,14029],{"class":912},[250,40149,14032],{"class":782},[250,40151,927],{"class":912},[250,40153,40154],{"class":252,"line":293},[250,40155,14039],{"class":912},[250,40157,40158,40160,40162],{"class":252,"line":299},[250,40159,14044],{"class":912},[250,40161,1066],{"class":778},[250,40163,927],{"class":912},[250,40165,40166],{"class":252,"line":132},[250,40167,1048],{"class":912},[250,40169,40170],{"class":252,"line":310},[250,40171,1053],{"class":912},[250,40173,40174],{"class":252,"line":316},[250,40175,8929],{"class":912},[250,40177,40178,40180,40182],{"class":252,"line":322},[250,40179,14065],{"class":912},[250,40181,14068],{"class":778},[250,40183,927],{"class":912},[250,40185,40186],{"class":252,"line":328},[250,40187,8934],{"class":912},[250,40189,40190,40192,40194,40196,40198],{"class":252,"line":334},[250,40191,14079],{"class":912},[250,40193,14082],{"class":778},[250,40195,14085],{"class":786},[250,40197,14088],{"class":782},[250,40199,927],{"class":912},[250,40201,40202],{"class":252,"line":340},[250,40203,14039],{"class":912},[250,40205,40206],{"class":252,"line":346},[250,40207,1048],{"class":912},[250,40209,40210],{"class":252,"line":352},[250,40211,1077],{"class":912},[24,40213,40214],{"type":26},[20,40215,14107,40216,14110],{},[39,40217,14068],{},[20,40219,14113,40220,14117],{},[39,40221,14116],{},[47,40223,40224],{"className":758,"code":14120,"filename":14116,"language":761,"meta":55,"style":55},[39,40225,40226,40234],{"__ignoreMap":55},[250,40227,40228,40230,40232],{"class":252,"line":253},[250,40229,14068],{"class":912},[250,40231,1416],{"class":786},[250,40233,14131],{"class":782},[250,40235,40236,40238,40240],{"class":252,"line":113},[250,40237,14082],{"class":912},[250,40239,1416],{"class":786},[250,40241,14140],{"class":782},[72,40243],{},[31,40245,14146],{"id":14145},[20,40247,14149],{},[20,40249,1092,40250,1007],{},[39,40251,14154],{},[47,40253,40254],{"className":1010,"code":14157,"filename":14154,"language":1012,"meta":55,"style":55},[39,40255,40256,40268,40280,40284,40302,40312,40316,40320,40350,40358,40366,40374,40382,40390,40394,40398,40402,40440,40448,40452,40456,40494,40504,40516,40524,40536,40544,40548,40552,40600,40606,40624,40650,40658,40666,40670],{"__ignoreMap":55},[250,40257,40258,40260,40262,40264,40266],{"class":252,"line":253},[250,40259,1763],{"class":786},[250,40261,14166],{"class":912},[250,40263,1769],{"class":786},[250,40265,14171],{"class":782},[250,40267,1379],{"class":912},[250,40269,40270,40272,40274,40276,40278],{"class":252,"line":113},[250,40271,1763],{"class":786},[250,40273,14180],{"class":912},[250,40275,1769],{"class":786},[250,40277,14185],{"class":782},[250,40279,1379],{"class":912},[250,40281,40282],{"class":252,"line":110},[250,40283,795],{"emptyLinePlaceholder":129},[250,40285,40286,40288,40290,40292,40294,40296,40298,40300],{"class":252,"line":269},[250,40287,1181],{"class":786},[250,40289,14198],{"class":778},[250,40291,1187],{"class":786},[250,40293,1568],{"class":786},[250,40295,14205],{"class":774},[250,40297,1647],{"class":912},[250,40299,14210],{"class":774},[250,40301,1982],{"class":912},[250,40303,40304,40306,40308,40310],{"class":252,"line":275},[250,40305,14217],{"class":912},[250,40307,14068],{"class":778},[250,40309,14085],{"class":786},[250,40311,14224],{"class":782},[250,40313,40314],{"class":252,"line":281},[250,40315,1885],{"class":912},[250,40317,40318],{"class":252,"line":287},[250,40319,795],{"emptyLinePlaceholder":129},[250,40321,40322,40324,40326,40328,40330,40332,40334,40336,40338,40340,40342,40344,40346,40348],{"class":252,"line":293},[250,40323,1019],{"class":786},[250,40325,2012],{"class":786},[250,40327,1845],{"class":786},[250,40329,14243],{"class":774},[250,40331,1434],{"class":912},[250,40333,14248],{"class":1370},[250,40335,1007],{"class":786},[250,40337,2506],{"class":778},[250,40339,2390],{"class":912},[250,40341,1007],{"class":786},[250,40343,1571],{"class":774},[250,40345,1962],{"class":912},[250,40347,14263],{"class":778},[250,40349,14266],{"class":912},[250,40351,40352,40354,40356],{"class":252,"line":299},[250,40353,1123],{"class":786},[250,40355,14273],{"class":774},[250,40357,14276],{"class":912},[250,40359,40360,40362,40364],{"class":252,"line":132},[250,40361,14281],{"class":912},[250,40363,14284],{"class":778},[250,40365,927],{"class":912},[250,40367,40368,40370,40372],{"class":252,"line":310},[250,40369,14291],{"class":912},[250,40371,1226],{"class":778},[250,40373,927],{"class":912},[250,40375,40376,40378,40380],{"class":252,"line":316},[250,40377,14300],{"class":912},[250,40379,14303],{"class":778},[250,40381,927],{"class":912},[250,40383,40384,40386,40388],{"class":252,"line":322},[250,40385,14310],{"class":912},[250,40387,1198],{"class":778},[250,40389,927],{"class":912},[250,40391,40392],{"class":252,"line":328},[250,40393,6749],{"class":912},[250,40395,40396],{"class":252,"line":334},[250,40397,991],{"class":912},[250,40399,40400],{"class":252,"line":340},[250,40401,795],{"emptyLinePlaceholder":129},[250,40403,40404,40406,40408,40410,40412,40414,40416,40418,40420,40422,40424,40426,40428,40430,40432,40434,40436,40438],{"class":252,"line":346},[250,40405,1019],{"class":786},[250,40407,2012],{"class":786},[250,40409,1845],{"class":786},[250,40411,14337],{"class":774},[250,40413,1434],{"class":912},[250,40415,14342],{"class":1370},[250,40417,1007],{"class":786},[250,40419,2506],{"class":778},[250,40421,7128],{"class":912},[250,40423,14248],{"class":1370},[250,40425,1007],{"class":786},[250,40427,2506],{"class":778},[250,40429,2390],{"class":912},[250,40431,1007],{"class":786},[250,40433,1571],{"class":774},[250,40435,1962],{"class":912},[250,40437,14365],{"class":778},[250,40439,14266],{"class":912},[250,40441,40442,40444,40446],{"class":252,"line":352},[250,40443,1123],{"class":786},[250,40445,14374],{"class":774},[250,40447,14377],{"class":912},[250,40449,40450],{"class":252,"line":358},[250,40451,991],{"class":912},[250,40453,40454],{"class":252,"line":364},[250,40455,795],{"emptyLinePlaceholder":129},[250,40457,40458,40460,40462,40464,40466,40468,40470,40472,40474,40476,40478,40480,40482,40484,40486,40488,40490,40492],{"class":252,"line":370},[250,40459,1019],{"class":786},[250,40461,2012],{"class":786},[250,40463,1845],{"class":786},[250,40465,14396],{"class":774},[250,40467,1434],{"class":912},[250,40469,14401],{"class":1370},[250,40471,1007],{"class":786},[250,40473,2506],{"class":778},[250,40475,7128],{"class":912},[250,40477,14410],{"class":1370},[250,40479,1007],{"class":786},[250,40481,2506],{"class":778},[250,40483,2390],{"class":912},[250,40485,1007],{"class":786},[250,40487,1571],{"class":774},[250,40489,1962],{"class":912},[250,40491,14263],{"class":778},[250,40493,14266],{"class":912},[250,40495,40496,40498,40500,40502],{"class":252,"line":376},[250,40497,1123],{"class":786},[250,40499,1568],{"class":786},[250,40501,14435],{"class":774},[250,40503,14438],{"class":912},[250,40505,40506,40508,40510,40512,40514],{"class":252,"line":382},[250,40507,4604],{"class":912},[250,40509,14445],{"class":774},[250,40511,14448],{"class":912},[250,40513,14451],{"class":782},[250,40515,4599],{"class":912},[250,40517,40518,40520,40522],{"class":252,"line":388},[250,40519,4604],{"class":912},[250,40521,14460],{"class":774},[250,40523,4861],{"class":912},[250,40525,40526,40528,40530,40532,40534],{"class":252,"line":393},[250,40527,4604],{"class":912},[250,40529,14469],{"class":774},[250,40531,1434],{"class":912},[250,40533,14474],{"class":782},[250,40535,4852],{"class":912},[250,40537,40538,40540,40542],{"class":252,"line":399},[250,40539,4604],{"class":912},[250,40541,14483],{"class":774},[250,40543,14486],{"class":912},[250,40545,40546],{"class":252,"line":405},[250,40547,991],{"class":912},[250,40549,40550],{"class":252,"line":410},[250,40551,795],{"emptyLinePlaceholder":129},[250,40553,40554,40556,40558,40560,40562,40564,40566,40568,40570,40572,40574,40576,40578,40580,40582,40584,40586,40588,40590,40592,40594,40596,40598],{"class":252,"line":415},[250,40555,1019],{"class":786},[250,40557,2012],{"class":786},[250,40559,1845],{"class":786},[250,40561,14505],{"class":774},[250,40563,1434],{"class":912},[250,40565,14510],{"class":1370},[250,40567,1007],{"class":786},[250,40569,2506],{"class":778},[250,40571,2390],{"class":912},[250,40573,1007],{"class":786},[250,40575,1571],{"class":774},[250,40577,14523],{"class":912},[250,40579,14401],{"class":1370},[250,40581,1007],{"class":786},[250,40583,2506],{"class":778},[250,40585,14532],{"class":912},[250,40587,14410],{"class":1370},[250,40589,1007],{"class":786},[250,40591,2506],{"class":778},[250,40593,11640],{"class":912},[250,40595,14543],{"class":786},[250,40597,14546],{"class":778},[250,40599,14266],{"class":912},[250,40601,40602,40604],{"class":252,"line":420},[250,40603,14553],{"class":786},[250,40605,1118],{"class":912},[250,40607,40608,40610,40612,40614,40616,40618,40620,40622],{"class":252,"line":426},[250,40609,6403],{"class":786},[250,40611,7768],{"class":912},[250,40613,14564],{"class":778},[250,40615,11640],{"class":912},[250,40617,1416],{"class":786},[250,40619,1463],{"class":786},[250,40621,14573],{"class":774},[250,40623,14576],{"class":912},[250,40625,40626,40628,40630,40632,40634,40636,40638,40640,40642,40644,40646,40648],{"class":252,"line":431},[250,40627,14581],{"class":786},[250,40629,14584],{"class":912},[250,40631,1472],{"class":786},[250,40633,7768],{"class":912},[250,40635,14401],{"class":1370},[250,40637,1007],{"class":786},[250,40639,2506],{"class":778},[250,40641,14532],{"class":912},[250,40643,14410],{"class":1370},[250,40645,1007],{"class":786},[250,40647,2506],{"class":778},[250,40649,5784],{"class":912},[250,40651,40652,40654,40656],{"class":252,"line":436},[250,40653,14609],{"class":912},[250,40655,2164],{"class":786},[250,40657,1118],{"class":912},[250,40659,40660,40662,40664],{"class":252,"line":442},[250,40661,14581],{"class":786},[250,40663,14546],{"class":778},[250,40665,1379],{"class":912},[250,40667,40668],{"class":252,"line":447},[250,40669,986],{"class":912},[250,40671,40672],{"class":252,"line":453},[250,40673,991],{"class":912},[161,40675,40676],{"icon":5036,"title":14632},[20,40677,14635],{},[72,40679],{},[31,40681,14641],{"id":14640},[20,40683,14644],{},[20,40685,1092,40686,1007],{},[39,40687,14649],{},[47,40689,40690],{"className":1010,"code":14652,"filename":14649,"language":1012,"meta":55,"style":55},[39,40691,40692,40704,40716,40728,40740,40744,40752,40762,40772,40782,40786,40790,40810,40824,40828,40842,40850,40854,40858,40862,40866,40870,40874,40894,40920,40924,40928,40956,40970,40974,40984,40992,40996,41000,41014,41018,41028,41036,41040,41044,41050],{"__ignoreMap":55},[250,40693,40694,40696,40698,40700,40702],{"class":252,"line":253},[250,40695,1763],{"class":786},[250,40697,5369],{"class":912},[250,40699,1769],{"class":786},[250,40701,14665],{"class":782},[250,40703,1379],{"class":912},[250,40705,40706,40708,40710,40712,40714],{"class":252,"line":113},[250,40707,1763],{"class":786},[250,40709,14674],{"class":912},[250,40711,1769],{"class":786},[250,40713,5105],{"class":782},[250,40715,1379],{"class":912},[250,40717,40718,40720,40722,40724,40726],{"class":252,"line":110},[250,40719,1763],{"class":786},[250,40721,6176],{"class":912},[250,40723,1769],{"class":786},[250,40725,4420],{"class":782},[250,40727,1379],{"class":912},[250,40729,40730,40732,40734,40736,40738],{"class":252,"line":269},[250,40731,1763],{"class":786},[250,40733,14699],{"class":912},[250,40735,1769],{"class":786},[250,40737,14704],{"class":782},[250,40739,1379],{"class":912},[250,40741,40742],{"class":252,"line":275},[250,40743,795],{"emptyLinePlaceholder":129},[250,40745,40746,40748,40750],{"class":252,"line":281},[250,40747,1360],{"class":786},[250,40749,14717],{"class":774},[250,40751,1118],{"class":912},[250,40753,40754,40756,40758,40760],{"class":252,"line":287},[250,40755,14724],{"class":1370},[250,40757,1007],{"class":786},[250,40759,2506],{"class":778},[250,40761,1379],{"class":912},[250,40763,40764,40766,40768,40770],{"class":252,"line":293},[250,40765,14735],{"class":1370},[250,40767,1007],{"class":786},[250,40769,2506],{"class":778},[250,40771,1379],{"class":912},[250,40773,40774,40776,40778,40780],{"class":252,"line":299},[250,40775,2501],{"class":1370},[250,40777,1007],{"class":786},[250,40779,2506],{"class":778},[250,40781,1379],{"class":912},[250,40783,40784],{"class":252,"line":132},[250,40785,991],{"class":912},[250,40787,40788],{"class":252,"line":310},[250,40789,795],{"emptyLinePlaceholder":129},[250,40791,40792,40794,40796,40798,40800,40802,40804,40806,40808],{"class":252,"line":316},[250,40793,1019],{"class":786},[250,40795,2012],{"class":786},[250,40797,1845],{"class":786},[250,40799,14770],{"class":774},[250,40801,1434],{"class":912},[250,40803,14775],{"class":1370},[250,40805,1007],{"class":786},[250,40807,14717],{"class":774},[250,40809,1512],{"class":912},[250,40811,40812,40814,40816,40818,40820,40822],{"class":252,"line":322},[250,40813,1455],{"class":786},[250,40815,14788],{"class":778},[250,40817,1187],{"class":786},[250,40819,1463],{"class":786},[250,40821,14243],{"class":774},[250,40823,14797],{"class":912},[250,40825,40826],{"class":252,"line":328},[250,40827,1053],{"class":912},[250,40829,40830,40832,40834,40836,40838,40840],{"class":252,"line":334},[250,40831,1565],{"class":786},[250,40833,5683],{"class":912},[250,40835,5730],{"class":774},[250,40837,14812],{"class":912},[250,40839,5735],{"class":774},[250,40841,1028],{"class":912},[250,40843,40844,40846,40848],{"class":252,"line":340},[250,40845,1613],{"class":912},[250,40847,1616],{"class":774},[250,40849,1156],{"class":912},[250,40851,40852],{"class":252,"line":346},[250,40853,14829],{"class":912},[250,40855,40856],{"class":252,"line":352},[250,40857,14834],{"class":912},[250,40859,40860],{"class":252,"line":358},[250,40861,14839],{"class":912},[250,40863,40864],{"class":252,"line":364},[250,40865,6749],{"class":912},[250,40867,40868],{"class":252,"line":370},[250,40869,991],{"class":912},[250,40871,40872],{"class":252,"line":376},[250,40873,795],{"emptyLinePlaceholder":129},[250,40875,40876,40878,40880,40882,40884,40886,40888,40890,40892],{"class":252,"line":382},[250,40877,1019],{"class":786},[250,40879,2012],{"class":786},[250,40881,1845],{"class":786},[250,40883,14862],{"class":774},[250,40885,1434],{"class":912},[250,40887,14410],{"class":1370},[250,40889,1007],{"class":786},[250,40891,2506],{"class":778},[250,40893,1512],{"class":912},[250,40895,40896,40898,40900,40902,40904,40906,40908,40910,40912,40914,40916,40918],{"class":252,"line":388},[250,40897,1123],{"class":786},[250,40899,5683],{"class":912},[250,40901,5870],{"class":774},[250,40903,1647],{"class":912},[250,40905,1769],{"class":774},[250,40907,14812],{"class":912},[250,40909,5879],{"class":774},[250,40911,1434],{"class":912},[250,40913,6442],{"class":774},[250,40915,14895],{"class":912},[250,40917,6062],{"class":774},[250,40919,1906],{"class":912},[250,40921,40922],{"class":252,"line":393},[250,40923,991],{"class":912},[250,40925,40926],{"class":252,"line":399},[250,40927,795],{"emptyLinePlaceholder":129},[250,40929,40930,40932,40934,40936,40938,40940,40942,40944,40946,40948,40950,40952,40954],{"class":252,"line":405},[250,40931,1019],{"class":786},[250,40933,2012],{"class":786},[250,40935,1845],{"class":786},[250,40937,14918],{"class":774},[250,40939,1434],{"class":912},[250,40941,14410],{"class":1370},[250,40943,1007],{"class":786},[250,40945,2506],{"class":778},[250,40947,7128],{"class":912},[250,40949,14248],{"class":1370},[250,40951,1007],{"class":786},[250,40953,2506],{"class":778},[250,40955,1512],{"class":912},[250,40957,40958,40960,40962,40964,40966,40968],{"class":252,"line":410},[250,40959,1455],{"class":786},[250,40961,14943],{"class":778},[250,40963,1187],{"class":786},[250,40965,1463],{"class":786},[250,40967,14862],{"class":774},[250,40969,14952],{"class":912},[250,40971,40972],{"class":252,"line":415},[250,40973,1053],{"class":912},[250,40975,40976,40978,40980,40982],{"class":252,"line":420},[250,40977,1486],{"class":786},[250,40979,1440],{"class":912},[250,40981,1491],{"class":786},[250,40983,14967],{"class":912},[250,40985,40986,40988,40990],{"class":252,"line":426},[250,40987,14581],{"class":786},[250,40989,14546],{"class":778},[250,40991,1379],{"class":912},[250,40993,40994],{"class":252,"line":431},[250,40995,986],{"class":912},[250,40997,40998],{"class":252,"line":436},[250,40999,1053],{"class":912},[250,41001,41002,41004,41006,41008,41010,41012],{"class":252,"line":442},[250,41003,1455],{"class":786},[250,41005,14990],{"class":778},[250,41007,1187],{"class":786},[250,41009,1463],{"class":786},[250,41011,14337],{"class":774},[250,41013,14999],{"class":912},[250,41015,41016],{"class":252,"line":447},[250,41017,1053],{"class":912},[250,41019,41020,41022,41024,41026],{"class":252,"line":453},[250,41021,1486],{"class":786},[250,41023,1440],{"class":912},[250,41025,1491],{"class":786},[250,41027,15014],{"class":912},[250,41029,41030,41032,41034],{"class":252,"line":459},[250,41031,14581],{"class":786},[250,41033,14546],{"class":778},[250,41035,1379],{"class":912},[250,41037,41038],{"class":252,"line":465},[250,41039,986],{"class":912},[250,41041,41042],{"class":252,"line":471},[250,41043,1053],{"class":912},[250,41045,41046,41048],{"class":252,"line":2201},[250,41047,1123],{"class":786},[250,41049,15037],{"class":912},[250,41051,41052],{"class":252,"line":2207},[250,41053,991],{"class":912},[20,41055,15044,41056,1007],{},[39,41057,4389],{},[47,41059,41060],{"className":1010,"code":15049,"filename":4389,"language":1012,"meta":55,"style":55},[39,41061,41062,41074,41078,41096,41112,41132,41148,41164,41184,41188,41192],{"__ignoreMap":55},[250,41063,41064,41066,41068,41070,41072],{"class":252,"line":253},[250,41065,1763],{"class":786},[250,41067,15058],{"class":912},[250,41069,1769],{"class":786},[250,41071,4406],{"class":782},[250,41073,1379],{"class":912},[250,41075,41076],{"class":252,"line":113},[250,41077,795],{"emptyLinePlaceholder":129},[250,41079,41080,41082,41084,41086,41088,41090,41092,41094],{"class":252,"line":110},[250,41081,1019],{"class":786},[250,41083,4438],{"class":786},[250,41085,15077],{"class":778},[250,41087,1187],{"class":786},[250,41089,4446],{"class":774},[250,41091,1434],{"class":912},[250,41093,15086],{"class":782},[250,41095,4454],{"class":912},[250,41097,41098,41100,41102,41104,41106,41108,41110],{"class":252,"line":269},[250,41099,4459],{"class":912},[250,41101,52],{"class":774},[250,41103,1434],{"class":912},[250,41105,4466],{"class":782},[250,41107,2380],{"class":912},[250,41109,4471],{"class":774},[250,41111,1156],{"class":912},[250,41113,41114,41116,41118,41120,41122,41124,41126,41128,41130],{"class":252,"line":275},[250,41115,15109],{"class":912},[250,41117,52],{"class":774},[250,41119,1434],{"class":912},[250,41121,15116],{"class":782},[250,41123,2380],{"class":912},[250,41125,4490],{"class":774},[250,41127,1647],{"class":912},[250,41129,15125],{"class":774},[250,41131,1156],{"class":912},[250,41133,41134,41136,41138,41140,41142,41144,41146],{"class":252,"line":281},[250,41135,15132],{"class":912},[250,41137,52],{"class":774},[250,41139,1434],{"class":912},[250,41141,15139],{"class":782},[250,41143,2380],{"class":912},[250,41145,4490],{"class":774},[250,41147,1156],{"class":912},[250,41149,41150,41152,41154,41156,41158,41160,41162],{"class":252,"line":287},[250,41151,4478],{"class":912},[250,41153,52],{"class":774},[250,41155,1434],{"class":912},[250,41157,4485],{"class":782},[250,41159,2380],{"class":912},[250,41161,4490],{"class":774},[250,41163,1156],{"class":912},[250,41165,41166,41168,41170,41172,41174,41176,41178,41180,41182],{"class":252,"line":293},[250,41167,4584],{"class":912},[250,41169,4556],{"class":774},[250,41171,1434],{"class":912},[250,41173,4591],{"class":782},[250,41175,4564],{"class":912},[250,41177,4596],{"class":782},[250,41179,4570],{"class":912},[250,41181,4490],{"class":774},[250,41183,1156],{"class":912},[250,41185,41186],{"class":252,"line":299},[250,41187,1077],{"class":912},[250,41189,41190],{"class":252,"line":132},[250,41191,795],{"emptyLinePlaceholder":129},[250,41193,41194,41196,41198,41200,41202,41204],{"class":252,"line":310},[250,41195,1019],{"class":786},[250,41197,4974],{"class":786},[250,41199,15198],{"class":774},[250,41201,1187],{"class":786},[250,41203,4982],{"class":786},[250,41205,15205],{"class":912},[72,41207],{},[31,41209,15211],{"id":15210},[2459,41211,15215],{"id":15214},[20,41213,1092,41214,1007],{},[39,41215,15220],{},[47,41217,41218],{"className":1010,"code":15223,"filename":15220,"language":1012,"meta":55,"style":55},[39,41219,41220,41232,41244,41248,41270,41284,41288,41292,41314,41322,41330,41338,41342,41346,41350,41354,41368,41372,41378,41386,41394,41402,41406,41410,41414,41418,41426,41430,41434,41438,41442,41446,41450,41464,41468,41478,41486,41498,41506,41528,41532,41536,41546],{"__ignoreMap":55},[250,41221,41222,41224,41226,41228,41230],{"class":252,"line":253},[250,41223,1763],{"class":786},[250,41225,15232],{"class":912},[250,41227,1769],{"class":786},[250,41229,15237],{"class":782},[250,41231,1379],{"class":912},[250,41233,41234,41236,41238,41240,41242],{"class":252,"line":113},[250,41235,1763],{"class":786},[250,41237,15246],{"class":912},[250,41239,1769],{"class":786},[250,41241,15251],{"class":782},[250,41243,1379],{"class":912},[250,41245,41246],{"class":252,"line":110},[250,41247,795],{"emptyLinePlaceholder":129},[250,41249,41250,41252,41254,41256,41258,41260,41262,41264,41266,41268],{"class":252,"line":269},[250,41251,1019],{"class":786},[250,41253,1022],{"class":786},[250,41255,1109],{"class":774},[250,41257,1434],{"class":912},[250,41259,1437],{"class":786},[250,41261,1440],{"class":912},[250,41263,1443],{"class":1370},[250,41265,1446],{"class":912},[250,41267,1115],{"class":786},[250,41269,1118],{"class":912},[250,41271,41272,41274,41276,41278,41280,41282],{"class":252,"line":275},[250,41273,1455],{"class":786},[250,41275,1458],{"class":778},[250,41277,1187],{"class":786},[250,41279,1463],{"class":786},[250,41281,1466],{"class":774},[250,41283,6261],{"class":912},[250,41285,41286],{"class":252,"line":281},[250,41287,1053],{"class":912},[250,41289,41290],{"class":252,"line":287},[250,41291,6270],{"class":768},[250,41293,41294,41296,41298,41300,41302,41304,41306,41308,41310,41312],{"class":252,"line":293},[250,41295,1486],{"class":786},[250,41297,1440],{"class":912},[250,41299,1491],{"class":786},[250,41301,15312],{"class":912},[250,41303,1497],{"class":786},[250,41305,6286],{"class":786},[250,41307,15319],{"class":912},[250,41309,1497],{"class":786},[250,41311,6286],{"class":786},[250,41313,15326],{"class":912},[250,41315,41316,41318,41320],{"class":252,"line":299},[250,41317,1517],{"class":786},[250,41319,1520],{"class":774},[250,41321,1028],{"class":912},[250,41323,41324,41326,41328],{"class":252,"line":132},[250,41325,1527],{"class":912},[250,41327,1530],{"class":778},[250,41329,927],{"class":912},[250,41331,41332,41334,41336],{"class":252,"line":310},[250,41333,1537],{"class":912},[250,41335,15349],{"class":782},[250,41337,927],{"class":912},[250,41339,41340],{"class":252,"line":316},[250,41341,1547],{"class":912},[250,41343,41344],{"class":252,"line":322},[250,41345,986],{"class":912},[250,41347,41348],{"class":252,"line":328},[250,41349,1053],{"class":912},[250,41351,41352],{"class":252,"line":334},[250,41353,15368],{"class":768},[250,41355,41356,41358,41360,41362,41364,41366],{"class":252,"line":340},[250,41357,1455],{"class":786},[250,41359,15375],{"class":778},[250,41361,1187],{"class":786},[250,41363,1463],{"class":786},[250,41365,14862],{"class":774},[250,41367,15384],{"class":912},[250,41369,41370],{"class":252,"line":346},[250,41371,1053],{"class":912},[250,41373,41374,41376],{"class":252,"line":352},[250,41375,1486],{"class":786},[250,41377,15395],{"class":912},[250,41379,41380,41382,41384],{"class":252,"line":358},[250,41381,1517],{"class":786},[250,41383,1520],{"class":774},[250,41385,1028],{"class":912},[250,41387,41388,41390,41392],{"class":252,"line":364},[250,41389,1527],{"class":912},[250,41391,1530],{"class":778},[250,41393,927],{"class":912},[250,41395,41396,41398,41400],{"class":252,"line":370},[250,41397,1537],{"class":912},[250,41399,15418],{"class":782},[250,41401,927],{"class":912},[250,41403,41404],{"class":252,"line":376},[250,41405,1547],{"class":912},[250,41407,41408],{"class":252,"line":382},[250,41409,986],{"class":912},[250,41411,41412],{"class":252,"line":388},[250,41413,1053],{"class":912},[250,41415,41416],{"class":252,"line":393},[250,41417,15437],{"class":768},[250,41419,41420,41422,41424],{"class":252,"line":399},[250,41421,1565],{"class":786},[250,41423,14770],{"class":774},[250,41425,1028],{"class":912},[250,41427,41428],{"class":252,"line":405},[250,41429,15450],{"class":912},[250,41431,41432],{"class":252,"line":410},[250,41433,15455],{"class":912},[250,41435,41436],{"class":252,"line":415},[250,41437,15460],{"class":912},[250,41439,41440],{"class":252,"line":420},[250,41441,6749],{"class":912},[250,41443,41444],{"class":252,"line":426},[250,41445,1053],{"class":912},[250,41447,41448],{"class":252,"line":431},[250,41449,15473],{"class":768},[250,41451,41452,41454,41456,41458,41460,41462],{"class":252,"line":436},[250,41453,1455],{"class":786},[250,41455,15480],{"class":778},[250,41457,1187],{"class":786},[250,41459,1463],{"class":786},[250,41461,14396],{"class":774},[250,41463,15489],{"class":912},[250,41465,41466],{"class":252,"line":442},[250,41467,1053],{"class":912},[250,41469,41470,41472,41474,41476],{"class":252,"line":447},[250,41471,15498],{"class":774},[250,41473,5972],{"class":912},[250,41475,15503],{"class":782},[250,41477,15506],{"class":912},[250,41479,41480,41482,41484],{"class":252,"line":453},[250,41481,15511],{"class":912},[250,41483,1066],{"class":778},[250,41485,927],{"class":912},[250,41487,41488,41490,41492,41494,41496],{"class":252,"line":459},[250,41489,15520],{"class":912},[250,41491,15523],{"class":778},[250,41493,1506],{"class":786},[250,41495,15528],{"class":782},[250,41497,927],{"class":912},[250,41499,41500,41502,41504],{"class":252,"line":465},[250,41501,15535],{"class":912},[250,41503,15538],{"class":782},[250,41505,927],{"class":912},[250,41507,41508,41510,41512,41514,41516,41518,41520,41522,41524,41526],{"class":252,"line":471},[250,41509,15545],{"class":912},[250,41511,15548],{"class":778},[250,41513,5094],{"class":786},[250,41515,15553],{"class":778},[250,41517,5094],{"class":786},[250,41519,15558],{"class":778},[250,41521,5094],{"class":786},[250,41523,15563],{"class":778},[250,41525,7128],{"class":912},[250,41527,15568],{"class":768},[250,41529,41530],{"class":252,"line":2201},[250,41531,6749],{"class":912},[250,41533,41534],{"class":252,"line":2207},[250,41535,1053],{"class":912},[250,41537,41538,41540,41542,41544],{"class":252,"line":2213},[250,41539,1123],{"class":786},[250,41541,15583],{"class":912},[250,41543,1066],{"class":778},[250,41545,15588],{"class":912},[250,41547,41548],{"class":252,"line":2218},[250,41549,1077],{"class":912},[2459,41551,15596],{"id":15595},[20,41553,1092,41554,1007],{},[39,41555,15601],{},[47,41557,41558],{"className":1010,"code":15604,"filename":15601,"language":1012,"meta":55,"style":55},[39,41559,41560,41572,41584,41588,41610,41624,41628,41644,41652,41660,41668,41672,41676,41680,41694,41698,41708,41716,41724,41732,41736,41740,41744,41758,41762,41772,41780,41792,41800,41822,41826,41830,41840],{"__ignoreMap":55},[250,41561,41562,41564,41566,41568,41570],{"class":252,"line":253},[250,41563,1763],{"class":786},[250,41565,15613],{"class":912},[250,41567,1769],{"class":786},[250,41569,15237],{"class":782},[250,41571,1379],{"class":912},[250,41573,41574,41576,41578,41580,41582],{"class":252,"line":113},[250,41575,1763],{"class":786},[250,41577,15246],{"class":912},[250,41579,1769],{"class":786},[250,41581,15251],{"class":782},[250,41583,1379],{"class":912},[250,41585,41586],{"class":252,"line":110},[250,41587,795],{"emptyLinePlaceholder":129},[250,41589,41590,41592,41594,41596,41598,41600,41602,41604,41606,41608],{"class":252,"line":269},[250,41591,1019],{"class":786},[250,41593,1022],{"class":786},[250,41595,1109],{"class":774},[250,41597,1434],{"class":912},[250,41599,1437],{"class":786},[250,41601,1440],{"class":912},[250,41603,1443],{"class":1370},[250,41605,1446],{"class":912},[250,41607,1115],{"class":786},[250,41609,1118],{"class":912},[250,41611,41612,41614,41616,41618,41620,41622],{"class":252,"line":275},[250,41613,1455],{"class":786},[250,41615,1458],{"class":778},[250,41617,1187],{"class":786},[250,41619,1463],{"class":786},[250,41621,1466],{"class":774},[250,41623,6261],{"class":912},[250,41625,41626],{"class":252,"line":281},[250,41627,1053],{"class":912},[250,41629,41630,41632,41634,41636,41638,41640,41642],{"class":252,"line":287},[250,41631,1486],{"class":786},[250,41633,1440],{"class":912},[250,41635,1491],{"class":786},[250,41637,15312],{"class":912},[250,41639,1497],{"class":786},[250,41641,6286],{"class":786},[250,41643,15692],{"class":912},[250,41645,41646,41648,41650],{"class":252,"line":293},[250,41647,1517],{"class":786},[250,41649,1520],{"class":774},[250,41651,1028],{"class":912},[250,41653,41654,41656,41658],{"class":252,"line":299},[250,41655,1527],{"class":912},[250,41657,1530],{"class":778},[250,41659,927],{"class":912},[250,41661,41662,41664,41666],{"class":252,"line":132},[250,41663,1537],{"class":912},[250,41665,15715],{"class":782},[250,41667,927],{"class":912},[250,41669,41670],{"class":252,"line":310},[250,41671,1547],{"class":912},[250,41673,41674],{"class":252,"line":316},[250,41675,986],{"class":912},[250,41677,41678],{"class":252,"line":322},[250,41679,1053],{"class":912},[250,41681,41682,41684,41686,41688,41690,41692],{"class":252,"line":328},[250,41683,1455],{"class":786},[250,41685,14943],{"class":778},[250,41687,1187],{"class":786},[250,41689,1463],{"class":786},[250,41691,14918],{"class":774},[250,41693,15744],{"class":912},[250,41695,41696],{"class":252,"line":334},[250,41697,1053],{"class":912},[250,41699,41700,41702,41704,41706],{"class":252,"line":340},[250,41701,1486],{"class":786},[250,41703,1440],{"class":912},[250,41705,1491],{"class":786},[250,41707,14967],{"class":912},[250,41709,41710,41712,41714],{"class":252,"line":346},[250,41711,1517],{"class":786},[250,41713,1520],{"class":774},[250,41715,1028],{"class":912},[250,41717,41718,41720,41722],{"class":252,"line":352},[250,41719,1527],{"class":912},[250,41721,10538],{"class":778},[250,41723,927],{"class":912},[250,41725,41726,41728,41730],{"class":252,"line":358},[250,41727,1537],{"class":912},[250,41729,15781],{"class":782},[250,41731,927],{"class":912},[250,41733,41734],{"class":252,"line":364},[250,41735,1547],{"class":912},[250,41737,41738],{"class":252,"line":370},[250,41739,986],{"class":912},[250,41741,41742],{"class":252,"line":376},[250,41743,1053],{"class":912},[250,41745,41746,41748,41750,41752,41754,41756],{"class":252,"line":382},[250,41747,1455],{"class":786},[250,41749,15480],{"class":778},[250,41751,1187],{"class":786},[250,41753,1463],{"class":786},[250,41755,14396],{"class":774},[250,41757,15810],{"class":912},[250,41759,41760],{"class":252,"line":388},[250,41761,1053],{"class":912},[250,41763,41764,41766,41768,41770],{"class":252,"line":393},[250,41765,15498],{"class":774},[250,41767,5972],{"class":912},[250,41769,15503],{"class":782},[250,41771,15506],{"class":912},[250,41773,41774,41776,41778],{"class":252,"line":399},[250,41775,15511],{"class":912},[250,41777,1066],{"class":778},[250,41779,927],{"class":912},[250,41781,41782,41784,41786,41788,41790],{"class":252,"line":405},[250,41783,15520],{"class":912},[250,41785,15523],{"class":778},[250,41787,1506],{"class":786},[250,41789,15528],{"class":782},[250,41791,927],{"class":912},[250,41793,41794,41796,41798],{"class":252,"line":410},[250,41795,15535],{"class":912},[250,41797,15538],{"class":782},[250,41799,927],{"class":912},[250,41801,41802,41804,41806,41808,41810,41812,41814,41816,41818,41820],{"class":252,"line":415},[250,41803,15545],{"class":912},[250,41805,15548],{"class":778},[250,41807,5094],{"class":786},[250,41809,15553],{"class":778},[250,41811,5094],{"class":786},[250,41813,15558],{"class":778},[250,41815,5094],{"class":786},[250,41817,15563],{"class":778},[250,41819,7128],{"class":912},[250,41821,15568],{"class":768},[250,41823,41824],{"class":252,"line":420},[250,41825,6749],{"class":912},[250,41827,41828],{"class":252,"line":426},[250,41829,1053],{"class":912},[250,41831,41832,41834,41836,41838],{"class":252,"line":431},[250,41833,1123],{"class":786},[250,41835,15583],{"class":912},[250,41837,1066],{"class":778},[250,41839,15893],{"class":912},[250,41841,41842],{"class":252,"line":436},[250,41843,1077],{"class":912},[2459,41845,15901],{"id":15900},[20,41847,1092,41848,1007],{},[39,41849,15906],{},[47,41851,41852],{"className":1010,"code":15909,"filename":15906,"language":1012,"meta":55,"style":55},[39,41853,41854,41876,41886,41896],{"__ignoreMap":55},[250,41855,41856,41858,41860,41862,41864,41866,41868,41870,41872,41874],{"class":252,"line":253},[250,41857,1019],{"class":786},[250,41859,1022],{"class":786},[250,41861,1109],{"class":774},[250,41863,1434],{"class":912},[250,41865,1437],{"class":786},[250,41867,1440],{"class":912},[250,41869,1443],{"class":1370},[250,41871,1446],{"class":912},[250,41873,1115],{"class":786},[250,41875,1118],{"class":912},[250,41877,41878,41880,41882,41884],{"class":252,"line":113},[250,41879,15938],{"class":774},[250,41881,5972],{"class":912},[250,41883,15503],{"class":782},[250,41885,1885],{"class":912},[250,41887,41888,41890,41892,41894],{"class":252,"line":110},[250,41889,1123],{"class":786},[250,41891,15583],{"class":912},[250,41893,1066],{"class":778},[250,41895,5784],{"class":912},[250,41897,41898],{"class":252,"line":269},[250,41899,1077],{"class":912},[2459,41901,15962],{"id":15961},[20,41903,1092,41904,1007],{},[39,41905,15967],{},[47,41907,41908],{"className":1010,"code":15970,"filename":15967,"language":1012,"meta":55,"style":55},[39,41909,41910,41922,41934,41938,41960,41976,41980,41990,41998,42006,42014,42018,42022,42026,42040,42044,42054,42062,42070,42078,42082,42086,42090,42104,42108,42118,42126,42134,42142,42146,42150,42154,42160,42164,42168,42172,42176],{"__ignoreMap":55},[250,41911,41912,41914,41916,41918,41920],{"class":252,"line":253},[250,41913,1763],{"class":786},[250,41915,15979],{"class":912},[250,41917,1769],{"class":786},[250,41919,15251],{"class":782},[250,41921,1379],{"class":912},[250,41923,41924,41926,41928,41930,41932],{"class":252,"line":113},[250,41925,1763],{"class":786},[250,41927,15992],{"class":912},[250,41929,1769],{"class":786},[250,41931,15237],{"class":782},[250,41933,1379],{"class":912},[250,41935,41936],{"class":252,"line":110},[250,41937,795],{"emptyLinePlaceholder":129},[250,41939,41940,41942,41944,41946,41948,41950,41952,41954,41956,41958],{"class":252,"line":269},[250,41941,1019],{"class":786},[250,41943,1022],{"class":786},[250,41945,1109],{"class":774},[250,41947,1434],{"class":912},[250,41949,1437],{"class":786},[250,41951,1440],{"class":912},[250,41953,1443],{"class":1370},[250,41955,1446],{"class":912},[250,41957,1115],{"class":786},[250,41959,1118],{"class":912},[250,41961,41962,41964,41966,41968,41970,41972,41974],{"class":252,"line":275},[250,41963,1455],{"class":786},[250,41965,15480],{"class":778},[250,41967,1187],{"class":786},[250,41969,16035],{"class":774},[250,41971,5972],{"class":912},[250,41973,15503],{"class":782},[250,41975,1885],{"class":912},[250,41977,41978],{"class":252,"line":281},[250,41979,1053],{"class":912},[250,41981,41982,41984,41986,41988],{"class":252,"line":287},[250,41983,1486],{"class":786},[250,41985,1440],{"class":912},[250,41987,1491],{"class":786},[250,41989,16056],{"class":912},[250,41991,41992,41994,41996],{"class":252,"line":293},[250,41993,1517],{"class":786},[250,41995,1520],{"class":774},[250,41997,1028],{"class":912},[250,41999,42000,42002,42004],{"class":252,"line":299},[250,42001,1527],{"class":912},[250,42003,10538],{"class":778},[250,42005,927],{"class":912},[250,42007,42008,42010,42012],{"class":252,"line":132},[250,42009,1537],{"class":912},[250,42011,16079],{"class":782},[250,42013,927],{"class":912},[250,42015,42016],{"class":252,"line":310},[250,42017,1547],{"class":912},[250,42019,42020],{"class":252,"line":316},[250,42021,986],{"class":912},[250,42023,42024],{"class":252,"line":322},[250,42025,1053],{"class":912},[250,42027,42028,42030,42032,42034,42036,42038],{"class":252,"line":328},[250,42029,1455],{"class":786},[250,42031,16100],{"class":778},[250,42033,1187],{"class":786},[250,42035,1463],{"class":786},[250,42037,14505],{"class":774},[250,42039,16109],{"class":912},[250,42041,42042],{"class":252,"line":334},[250,42043,1053],{"class":912},[250,42045,42046,42048,42050,42052],{"class":252,"line":340},[250,42047,1486],{"class":786},[250,42049,1440],{"class":912},[250,42051,1491],{"class":786},[250,42053,16124],{"class":912},[250,42055,42056,42058,42060],{"class":252,"line":346},[250,42057,1517],{"class":786},[250,42059,1520],{"class":774},[250,42061,1028],{"class":912},[250,42063,42064,42066,42068],{"class":252,"line":352},[250,42065,1527],{"class":912},[250,42067,10538],{"class":778},[250,42069,927],{"class":912},[250,42071,42072,42074,42076],{"class":252,"line":358},[250,42073,1537],{"class":912},[250,42075,16147],{"class":782},[250,42077,927],{"class":912},[250,42079,42080],{"class":252,"line":364},[250,42081,1547],{"class":912},[250,42083,42084],{"class":252,"line":370},[250,42085,986],{"class":912},[250,42087,42088],{"class":252,"line":376},[250,42089,1053],{"class":912},[250,42091,42092,42094,42096,42098,42100,42102],{"class":252,"line":382},[250,42093,1455],{"class":786},[250,42095,14943],{"class":778},[250,42097,1187],{"class":786},[250,42099,1463],{"class":786},[250,42101,14862],{"class":774},[250,42103,16176],{"class":912},[250,42105,42106],{"class":252,"line":388},[250,42107,1053],{"class":912},[250,42109,42110,42112,42114,42116],{"class":252,"line":393},[250,42111,1486],{"class":786},[250,42113,1440],{"class":912},[250,42115,1491],{"class":786},[250,42117,14967],{"class":912},[250,42119,42120,42122,42124],{"class":252,"line":399},[250,42121,1517],{"class":786},[250,42123,1520],{"class":774},[250,42125,1028],{"class":912},[250,42127,42128,42130,42132],{"class":252,"line":405},[250,42129,1527],{"class":912},[250,42131,10538],{"class":778},[250,42133,927],{"class":912},[250,42135,42136,42138,42140],{"class":252,"line":410},[250,42137,1537],{"class":912},[250,42139,16213],{"class":782},[250,42141,927],{"class":912},[250,42143,42144],{"class":252,"line":415},[250,42145,1547],{"class":912},[250,42147,42148],{"class":252,"line":420},[250,42149,986],{"class":912},[250,42151,42152],{"class":252,"line":426},[250,42153,1053],{"class":912},[250,42155,42156,42158],{"class":252,"line":431},[250,42157,1123],{"class":786},[250,42159,1118],{"class":912},[250,42161,42162],{"class":252,"line":436},[250,42163,16238],{"class":912},[250,42165,42166],{"class":252,"line":442},[250,42167,16243],{"class":912},[250,42169,42170],{"class":252,"line":447},[250,42171,16248],{"class":912},[250,42173,42174],{"class":252,"line":453},[250,42175,1161],{"class":912},[250,42177,42178],{"class":252,"line":459},[250,42179,1077],{"class":912},[72,42181],{},[31,42183,16262],{"id":16261},[20,42185,16265],{},[20,42187,1003,42188,1007],{},[39,42189,7575],{},[47,42191,42192],{"className":1010,"code":16272,"filename":7575,"language":1012,"meta":55,"style":55},[39,42193,42194,42206,42218,42230,42234,42256,42260,42276,42280,42290,42298,42306,42314,42318,42322,42326,42340,42344,42354,42362,42370,42378,42382,42386,42390,42402,42410,42418,42426,42430,42448,42468,42480,42488,42496,42508,42518,42522,42526,42530,42536],{"__ignoreMap":55},[250,42195,42196,42198,42200,42202,42204],{"class":252,"line":253},[250,42197,1763],{"class":786},[250,42199,5369],{"class":912},[250,42201,1769],{"class":786},[250,42203,5374],{"class":782},[250,42205,1379],{"class":912},[250,42207,42208,42210,42212,42214,42216],{"class":252,"line":113},[250,42209,1763],{"class":786},[250,42211,7599],{"class":912},[250,42213,1769],{"class":786},[250,42215,5388],{"class":782},[250,42217,1379],{"class":912},[250,42219,42220,42222,42224,42226,42228],{"class":252,"line":110},[250,42221,1763],{"class":786},[250,42223,15979],{"class":912},[250,42225,1769],{"class":786},[250,42227,16309],{"class":782},[250,42229,1379],{"class":912},[250,42231,42232],{"class":252,"line":269},[250,42233,795],{"emptyLinePlaceholder":129},[250,42235,42236,42238,42240,42242,42244,42246,42248,42250,42252,42254],{"class":252,"line":275},[250,42237,1019],{"class":786},[250,42239,1022],{"class":786},[250,42241,1109],{"class":774},[250,42243,1434],{"class":912},[250,42245,1437],{"class":786},[250,42247,1440],{"class":912},[250,42249,1443],{"class":1370},[250,42251,1446],{"class":912},[250,42253,1115],{"class":786},[250,42255,1118],{"class":912},[250,42257,42258],{"class":252,"line":281},[250,42259,16342],{"class":768},[250,42261,42262,42264,42266,42268,42270,42272,42274],{"class":252,"line":287},[250,42263,1455],{"class":786},[250,42265,15480],{"class":778},[250,42267,1187],{"class":786},[250,42269,16035],{"class":774},[250,42271,5972],{"class":912},[250,42273,15503],{"class":782},[250,42275,1885],{"class":912},[250,42277,42278],{"class":252,"line":293},[250,42279,1053],{"class":912},[250,42281,42282,42284,42286,42288],{"class":252,"line":299},[250,42283,1486],{"class":786},[250,42285,1440],{"class":912},[250,42287,1491],{"class":786},[250,42289,16056],{"class":912},[250,42291,42292,42294,42296],{"class":252,"line":132},[250,42293,1517],{"class":786},[250,42295,1520],{"class":774},[250,42297,1028],{"class":912},[250,42299,42300,42302,42304],{"class":252,"line":310},[250,42301,1527],{"class":912},[250,42303,10538],{"class":778},[250,42305,927],{"class":912},[250,42307,42308,42310,42312],{"class":252,"line":316},[250,42309,1537],{"class":912},[250,42311,16395],{"class":782},[250,42313,927],{"class":912},[250,42315,42316],{"class":252,"line":322},[250,42317,1547],{"class":912},[250,42319,42320],{"class":252,"line":328},[250,42321,986],{"class":912},[250,42323,42324],{"class":252,"line":334},[250,42325,1053],{"class":912},[250,42327,42328,42330,42332,42334,42336,42338],{"class":252,"line":340},[250,42329,1455],{"class":786},[250,42331,16100],{"class":778},[250,42333,1187],{"class":786},[250,42335,1463],{"class":786},[250,42337,14505],{"class":774},[250,42339,16109],{"class":912},[250,42341,42342],{"class":252,"line":346},[250,42343,1053],{"class":912},[250,42345,42346,42348,42350,42352],{"class":252,"line":352},[250,42347,1486],{"class":786},[250,42349,1440],{"class":912},[250,42351,1491],{"class":786},[250,42353,16124],{"class":912},[250,42355,42356,42358,42360],{"class":252,"line":358},[250,42357,1517],{"class":786},[250,42359,1520],{"class":774},[250,42361,1028],{"class":912},[250,42363,42364,42366,42368],{"class":252,"line":364},[250,42365,1527],{"class":912},[250,42367,10538],{"class":778},[250,42369,927],{"class":912},[250,42371,42372,42374,42376],{"class":252,"line":370},[250,42373,1537],{"class":912},[250,42375,16147],{"class":782},[250,42377,927],{"class":912},[250,42379,42380],{"class":252,"line":376},[250,42381,1547],{"class":912},[250,42383,42384],{"class":252,"line":382},[250,42385,986],{"class":912},[250,42387,42388],{"class":252,"line":388},[250,42389,1053],{"class":912},[250,42391,42392,42394,42396,42398,42400],{"class":252,"line":393},[250,42393,1455],{"class":786},[250,42395,7634],{"class":778},[250,42397,1187],{"class":786},[250,42399,1463],{"class":786},[250,42401,6413],{"class":912},[250,42403,42404,42406,42408],{"class":252,"line":399},[250,42405,4604],{"class":912},[250,42407,5870],{"class":774},[250,42409,4861],{"class":912},[250,42411,42412,42414,42416],{"class":252,"line":405},[250,42413,4604],{"class":912},[250,42415,1769],{"class":774},[250,42417,6945],{"class":912},[250,42419,42420,42422,42424],{"class":252,"line":410},[250,42421,4604],{"class":912},[250,42423,7663],{"class":774},[250,42425,7666],{"class":912},[250,42427,42428],{"class":252,"line":415},[250,42429,1053],{"class":912},[250,42431,42432,42434,42436,42438,42440,42442,42444,42446],{"class":252,"line":420},[250,42433,1455],{"class":786},[250,42435,7682],{"class":778},[250,42437,1187],{"class":786},[250,42439,1463],{"class":786},[250,42441,1571],{"class":778},[250,42443,2230],{"class":912},[250,42445,2233],{"class":774},[250,42447,1982],{"class":912},[250,42449,42450,42452,42454,42456,42458,42460,42462,42464,42466],{"class":252,"line":426},[250,42451,7699],{"class":912},[250,42453,2820],{"class":774},[250,42455,1434],{"class":912},[250,42457,1437],{"class":786},[250,42459,1440],{"class":912},[250,42461,7710],{"class":1370},[250,42463,1446],{"class":912},[250,42465,1115],{"class":786},[250,42467,1118],{"class":912},[250,42469,42470,42472,42474,42476,42478],{"class":252,"line":431},[250,42471,7721],{"class":786},[250,42473,5861],{"class":778},[250,42475,1187],{"class":786},[250,42477,1463],{"class":786},[250,42479,6413],{"class":912},[250,42481,42482,42484,42486],{"class":252,"line":436},[250,42483,7734],{"class":912},[250,42485,5870],{"class":774},[250,42487,4861],{"class":912},[250,42489,42490,42492,42494],{"class":252,"line":442},[250,42491,7734],{"class":912},[250,42493,1769],{"class":774},[250,42495,7005],{"class":912},[250,42497,42498,42500,42502,42504,42506],{"class":252,"line":447},[250,42499,7734],{"class":912},[250,42501,5879],{"class":774},[250,42503,7755],{"class":912},[250,42505,6056],{"class":774},[250,42507,7760],{"class":912},[250,42509,42510,42512,42514,42516],{"class":252,"line":453},[250,42511,7765],{"class":786},[250,42513,7768],{"class":912},[250,42515,7771],{"class":786},[250,42517,7774],{"class":912},[250,42519,42520],{"class":252,"line":459},[250,42521,7485],{"class":912},[250,42523,42524],{"class":252,"line":465},[250,42525,2859],{"class":912},[250,42527,42528],{"class":252,"line":471},[250,42529,1053],{"class":912},[250,42531,42532,42534],{"class":252,"line":2201},[250,42533,1123],{"class":786},[250,42535,7793],{"class":912},[250,42537,42538],{"class":252,"line":2207},[250,42539,1077],{"class":912},[161,42541,42542],{"icon":7846,"title":16626},[20,42543,16629],{},[72,42545],{},[31,42547,16635],{"id":16634},[20,42549,16638],{},[20,42551,16641,42552],{},[203,42553,16644],{"href":16644,"rel":42554},[207],[20,42556,16648,42557,1007],{},[39,42558,14116],{},[47,42560,42561],{"className":758,"code":16653,"filename":14116,"language":761,"meta":55,"style":55},[39,42562,42563,42571],{"__ignoreMap":55},[250,42564,42565,42567,42569],{"class":252,"line":253},[250,42566,16660],{"class":912},[250,42568,1416],{"class":786},[250,42570,16665],{"class":782},[250,42572,42573,42575,42577],{"class":252,"line":113},[250,42574,16670],{"class":912},[250,42576,1416],{"class":786},[250,42578,16675],{"class":782},[20,42580,1003,42581,1007],{},[39,42582,1006],{},[47,42584,42585],{"className":1010,"code":16682,"filename":1006,"language":1012,"meta":55,"style":55},[39,42586,42587,42597,42601,42605,42613,42621,42625,42633,42637,42641,42645,42653,42657,42665,42673,42677,42681,42693,42697,42701],{"__ignoreMap":55},[250,42588,42589,42591,42593,42595],{"class":252,"line":253},[250,42590,1019],{"class":786},[250,42592,1022],{"class":786},[250,42594,1025],{"class":774},[250,42596,1028],{"class":912},[250,42598,42599],{"class":252,"line":113},[250,42600,14009],{"class":912},[250,42602,42603],{"class":252,"line":110},[250,42604,14014],{"class":912},[250,42606,42607,42609,42611],{"class":252,"line":269},[250,42608,14019],{"class":912},[250,42610,14022],{"class":782},[250,42612,927],{"class":912},[250,42614,42615,42617,42619],{"class":252,"line":275},[250,42616,16715],{"class":912},[250,42618,16718],{"class":782},[250,42620,927],{"class":912},[250,42622,42623],{"class":252,"line":281},[250,42624,14039],{"class":912},[250,42626,42627,42629,42631],{"class":252,"line":287},[250,42628,14044],{"class":912},[250,42630,1066],{"class":778},[250,42632,927],{"class":912},[250,42634,42635],{"class":252,"line":293},[250,42636,1048],{"class":912},[250,42638,42639],{"class":252,"line":299},[250,42640,1053],{"class":912},[250,42642,42643],{"class":252,"line":132},[250,42644,8929],{"class":912},[250,42646,42647,42649,42651],{"class":252,"line":310},[250,42648,14065],{"class":912},[250,42650,14068],{"class":778},[250,42652,927],{"class":912},[250,42654,42655],{"class":252,"line":316},[250,42656,16757],{"class":912},[250,42658,42659,42661,42663],{"class":252,"line":322},[250,42660,16762],{"class":912},[250,42662,16660],{"class":778},[250,42664,927],{"class":912},[250,42666,42667,42669,42671],{"class":252,"line":328},[250,42668,16771],{"class":912},[250,42670,16670],{"class":778},[250,42672,927],{"class":912},[250,42674,42675],{"class":252,"line":334},[250,42676,14039],{"class":912},[250,42678,42679],{"class":252,"line":340},[250,42680,8934],{"class":912},[250,42682,42683,42685,42687,42689,42691],{"class":252,"line":346},[250,42684,14079],{"class":912},[250,42686,14082],{"class":778},[250,42688,14085],{"class":786},[250,42690,14088],{"class":782},[250,42692,927],{"class":912},[250,42694,42695],{"class":252,"line":352},[250,42696,14039],{"class":912},[250,42698,42699],{"class":252,"line":358},[250,42700,1048],{"class":912},[250,42702,42703],{"class":252,"line":364},[250,42704,1077],{"class":912},[20,42706,1092,42707,1007],{},[39,42708,16812],{},[47,42710,42711],{"className":1010,"code":16815,"filename":16812,"language":1012,"meta":55,"style":55},[39,42712,42713,42725,42737,42741,42751,42759,42763,42771,42779,42787,42791,42795],{"__ignoreMap":55},[250,42714,42715,42717,42719,42721,42723],{"class":252,"line":253},[250,42716,1763],{"class":786},[250,42718,16824],{"class":912},[250,42720,1769],{"class":786},[250,42722,16829],{"class":782},[250,42724,1379],{"class":912},[250,42726,42727,42729,42731,42733,42735],{"class":252,"line":113},[250,42728,1763],{"class":786},[250,42730,16838],{"class":912},[250,42732,1769],{"class":786},[250,42734,16843],{"class":782},[250,42736,1379],{"class":912},[250,42738,42739],{"class":252,"line":110},[250,42740,795],{"emptyLinePlaceholder":129},[250,42742,42743,42745,42747,42749],{"class":252,"line":269},[250,42744,1019],{"class":786},[250,42746,1022],{"class":786},[250,42748,16858],{"class":774},[250,42750,1028],{"class":912},[250,42752,42753,42755,42757],{"class":252,"line":275},[250,42754,16865],{"class":912},[250,42756,14068],{"class":778},[250,42758,927],{"class":912},[250,42760,42761],{"class":252,"line":281},[250,42762,16874],{"class":912},[250,42764,42765,42767,42769],{"class":252,"line":287},[250,42766,16879],{"class":912},[250,42768,4573],{"class":774},[250,42770,1028],{"class":912},[250,42772,42773,42775,42777],{"class":252,"line":293},[250,42774,16762],{"class":912},[250,42776,16660],{"class":778},[250,42778,927],{"class":912},[250,42780,42781,42783,42785],{"class":252,"line":299},[250,42782,16771],{"class":912},[250,42784,16670],{"class":778},[250,42786,927],{"class":912},[250,42788,42789],{"class":252,"line":132},[250,42790,462],{"class":912},[250,42792,42793],{"class":252,"line":310},[250,42794,468],{"class":912},[250,42796,42797],{"class":252,"line":316},[250,42798,1077],{"class":912},[72,42800],{},[31,42802,16917],{"id":16916},[20,42804,1092,42805,1007],{},[39,42806,16922],{},[47,42808,42809],{"className":16925,"code":16926,"filename":16922,"language":13747,"meta":55,"style":55},[39,42810,42811,42819,42833,42845,42849,42863,42877,42889,42911,42919,42923,42937,42949,42971,42979,42983,43003,43007,43015,43019,43043,43051,43055,43073,43077,43097,43101,43109,43117,43125,43129,43145,43161,43177,43193,43209,43213,43223,43233,43243,43247,43253,43265,43273,43277,43281,43285,43295,43311,43325,43333,43343,43347,43351,43355,43365,43381,43385],{"__ignoreMap":55},[250,42812,42813,42815,42817],{"class":252,"line":253},[250,42814,1962],{"class":912},[250,42816,16936],{"class":16935},[250,42818,13111],{"class":912},[250,42820,42821,42823,42825,42827,42829,42831],{"class":252,"line":113},[250,42822,16943],{"class":912},[250,42824,16946],{"class":16935},[250,42826,16949],{"class":774},[250,42828,1416],{"class":912},[250,42830,16954],{"class":782},[250,42832,13111],{"class":912},[250,42834,42835,42837,42839,42841,42843],{"class":252,"line":110},[250,42836,16961],{"class":912},[250,42838,15],{"class":16935},[250,42840,16966],{"class":912},[250,42842,15],{"class":16935},[250,42844,13111],{"class":912},[250,42846,42847],{"class":252,"line":269},[250,42848,6458],{"class":912},[250,42850,42851,42853,42855,42857,42859,42861],{"class":252,"line":275},[250,42852,16961],{"class":912},[250,42854,16981],{"class":16935},[250,42856,16984],{"class":774},[250,42858,1416],{"class":912},[250,42860,16989],{"class":782},[250,42862,13111],{"class":912},[250,42864,42865,42867,42869,42871,42873,42875],{"class":252,"line":281},[250,42866,16996],{"class":912},[250,42868,16946],{"class":16935},[250,42870,16949],{"class":774},[250,42872,1416],{"class":912},[250,42874,17005],{"class":782},[250,42876,13111],{"class":912},[250,42878,42879,42881,42883,42885,42887],{"class":252,"line":287},[250,42880,17012],{"class":912},[250,42882,17015],{"class":16935},[250,42884,17018],{"class":912},[250,42886,17015],{"class":16935},[250,42888,13111],{"class":912},[250,42890,42891,42893,42895,42897,42899,42901,42903,42905,42907,42909],{"class":252,"line":293},[250,42892,17012],{"class":912},[250,42894,14775],{"class":16935},[250,42896,17031],{"class":774},[250,42898,1416],{"class":912},[250,42900,15116],{"class":782},[250,42902,4974],{"class":774},[250,42904,1416],{"class":912},[250,42906,15116],{"class":782},[250,42908,17044],{"class":774},[250,42910,17047],{"class":912},[250,42912,42913,42915,42917],{"class":252,"line":299},[250,42914,17052],{"class":912},[250,42916,16946],{"class":16935},[250,42918,13111],{"class":912},[250,42920,42921],{"class":252,"line":132},[250,42922,17061],{"class":912},[250,42924,42925,42927,42929,42931,42933,42935],{"class":252,"line":310},[250,42926,16996],{"class":912},[250,42928,16946],{"class":16935},[250,42930,16949],{"class":774},[250,42932,1416],{"class":912},[250,42934,17005],{"class":782},[250,42936,13111],{"class":912},[250,42938,42939,42941,42943,42945,42947],{"class":252,"line":316},[250,42940,17012],{"class":912},[250,42942,17015],{"class":16935},[250,42944,17084],{"class":912},[250,42946,17015],{"class":16935},[250,42948,13111],{"class":912},[250,42950,42951,42953,42955,42957,42959,42961,42963,42965,42967,42969],{"class":252,"line":322},[250,42952,17012],{"class":912},[250,42954,14775],{"class":16935},[250,42956,17031],{"class":774},[250,42958,1416],{"class":912},[250,42960,15139],{"class":782},[250,42962,4974],{"class":774},[250,42964,1416],{"class":912},[250,42966,15139],{"class":782},[250,42968,17044],{"class":774},[250,42970,17047],{"class":912},[250,42972,42973,42975,42977],{"class":252,"line":328},[250,42974,17052],{"class":912},[250,42976,16946],{"class":16935},[250,42978,13111],{"class":912},[250,42980,42981],{"class":252,"line":334},[250,42982,17061],{"class":912},[250,42984,42985,42987,42989,42991,42993,42995,42997,42999,43001],{"class":252,"line":340},[250,42986,16996],{"class":912},[250,42988,17129],{"class":16935},[250,42990,4974],{"class":774},[250,42992,1416],{"class":912},[250,42994,17136],{"class":782},[250,42996,17139],{"class":774},[250,42998,1416],{"class":912},[250,43000,17144],{"class":782},[250,43002,13111],{"class":912},[250,43004,43005],{"class":252,"line":346},[250,43006,17151],{"class":912},[250,43008,43009,43011,43013],{"class":252,"line":352},[250,43010,17052],{"class":912},[250,43012,17129],{"class":16935},[250,43014,13111],{"class":912},[250,43016,43017],{"class":252,"line":358},[250,43018,17061],{"class":912},[250,43020,43021,43023,43025,43027,43029,43031,43033,43035,43037,43039,43041],{"class":252,"line":364},[250,43022,16996],{"class":912},[250,43024,20],{"class":16935},[250,43026,17172],{"class":774},[250,43028,1416],{"class":912},[250,43030,12292],{"class":782},[250,43032,16949],{"class":774},[250,43034,1416],{"class":912},[250,43036,12292],{"class":782},[250,43038,17185],{"class":912},[250,43040,20],{"class":16935},[250,43042,13111],{"class":912},[250,43044,43045,43047,43049],{"class":252,"line":370},[250,43046,17194],{"class":912},[250,43048,16981],{"class":16935},[250,43050,13111],{"class":912},[250,43052,43053],{"class":252,"line":376},[250,43054,6458],{"class":912},[250,43056,43057,43059,43061,43063,43065,43067,43069,43071],{"class":252,"line":382},[250,43058,16961],{"class":912},[250,43060,20],{"class":16935},[250,43062,16949],{"class":774},[250,43064,1416],{"class":912},[250,43066,17215],{"class":782},[250,43068,17218],{"class":912},[250,43070,20],{"class":16935},[250,43072,13111],{"class":912},[250,43074,43075],{"class":252,"line":388},[250,43076,6458],{"class":912},[250,43078,43079,43081,43083,43085,43087,43089,43091,43093,43095],{"class":252,"line":393},[250,43080,16961],{"class":912},[250,43082,17129],{"class":16935},[250,43084,17235],{"class":774},[250,43086,1416],{"class":912},[250,43088,17240],{"class":782},[250,43090,16949],{"class":774},[250,43092,1416],{"class":912},[250,43094,17247],{"class":782},[250,43096,13111],{"class":912},[250,43098,43099],{"class":252,"line":399},[250,43100,17254],{"class":912},[250,43102,43103,43105,43107],{"class":252,"line":405},[250,43104,17194],{"class":912},[250,43106,17129],{"class":16935},[250,43108,13111],{"class":912},[250,43110,43111,43113,43115],{"class":252,"line":410},[250,43112,17267],{"class":912},[250,43114,16946],{"class":16935},[250,43116,13111],{"class":912},[250,43118,43119,43121,43123],{"class":252,"line":415},[250,43120,13209],{"class":912},[250,43122,16936],{"class":16935},[250,43124,13111],{"class":912},[250,43126,43127],{"class":252,"line":420},[250,43128,795],{"emptyLinePlaceholder":129},[250,43130,43131,43133,43135,43137,43139,43141,43143],{"class":252,"line":426},[250,43132,1962],{"class":912},[250,43134,13212],{"class":16935},[250,43136,17292],{"class":774},[250,43138,17295],{"class":774},[250,43140,1416],{"class":912},[250,43142,13108],{"class":782},[250,43144,13111],{"class":912},[250,43146,43147,43149,43151,43153,43155,43157,43159],{"class":252,"line":431},[250,43148,1181],{"class":786},[250,43150,17308],{"class":778},[250,43152,1187],{"class":786},[250,43154,13496],{"class":774},[250,43156,1434],{"class":912},[250,43158,17317],{"class":782},[250,43160,1885],{"class":912},[250,43162,43163,43165,43167,43169,43171,43173,43175],{"class":252,"line":436},[250,43164,1181],{"class":786},[250,43166,17326],{"class":778},[250,43168,1187],{"class":786},[250,43170,13496],{"class":774},[250,43172,1434],{"class":912},[250,43174,17317],{"class":782},[250,43176,1885],{"class":912},[250,43178,43179,43181,43183,43185,43187,43189,43191],{"class":252,"line":442},[250,43180,1181],{"class":786},[250,43182,17343],{"class":778},[250,43184,1187],{"class":786},[250,43186,13496],{"class":774},[250,43188,1434],{"class":912},[250,43190,17352],{"class":778},[250,43192,1885],{"class":912},[250,43194,43195,43197,43199,43201,43203,43205,43207],{"class":252,"line":447},[250,43196,1181],{"class":786},[250,43198,17361],{"class":778},[250,43200,1187],{"class":786},[250,43202,13496],{"class":774},[250,43204,1434],{"class":912},[250,43206,17317],{"class":782},[250,43208,1885],{"class":912},[250,43210,43211],{"class":252,"line":453},[250,43212,795],{"emptyLinePlaceholder":129},[250,43214,43215,43217,43219,43221],{"class":252,"line":459},[250,43216,1437],{"class":786},[250,43218,1845],{"class":786},[250,43220,17384],{"class":774},[250,43222,1851],{"class":912},[250,43224,43225,43227,43229,43231],{"class":252,"line":465},[250,43226,17391],{"class":912},[250,43228,1416],{"class":786},[250,43230,17396],{"class":778},[250,43232,1379],{"class":912},[250,43234,43235,43237,43239,43241],{"class":252,"line":471},[250,43236,17403],{"class":912},[250,43238,1416],{"class":786},[250,43240,17408],{"class":782},[250,43242,1379],{"class":912},[250,43244,43245],{"class":252,"line":2201},[250,43246,1053],{"class":912},[250,43248,43249,43251],{"class":252,"line":2207},[250,43250,14553],{"class":786},[250,43252,1118],{"class":912},[250,43254,43255,43257,43259,43261,43263],{"class":252,"line":2213},[250,43256,5725],{"class":786},[250,43258,17427],{"class":774},[250,43260,1434],{"class":912},[250,43262,17432],{"class":782},[250,43264,4454],{"class":912},[250,43266,43267,43269,43271],{"class":252,"line":2218},[250,43268,17439],{"class":912},[250,43270,17442],{"class":782},[250,43272,927],{"class":912},[250,43274,43275],{"class":252,"line":2223},[250,43276,17449],{"class":912},[250,43278,43279],{"class":252,"line":2239},[250,43280,1547],{"class":912},[250,43282,43283],{"class":252,"line":2244},[250,43284,6458],{"class":912},[250,43286,43287,43289,43291,43293],{"class":252,"line":2267},[250,43288,17462],{"class":774},[250,43290,1434],{"class":912},[250,43292,17467],{"class":782},[250,43294,1885],{"class":912},[250,43296,43297,43299,43301,43303,43305,43307,43309],{"class":252,"line":2301},[250,43298,14609],{"class":912},[250,43300,2164],{"class":786},[250,43302,1440],{"class":912},[250,43304,17480],{"class":1370},[250,43306,1007],{"class":786},[250,43308,1410],{"class":778},[250,43310,1512],{"class":912},[250,43312,43313,43315,43317,43319,43321,43323],{"class":252,"line":2306},[250,43314,17491],{"class":912},[250,43316,1416],{"class":786},[250,43318,17496],{"class":912},[250,43320,1497],{"class":786},[250,43322,17501],{"class":782},[250,43324,1379],{"class":912},[250,43326,43327,43329,43331],{"class":252,"line":2320},[250,43328,14609],{"class":912},[250,43330,17510],{"class":786},[250,43332,1118],{"class":912},[250,43334,43335,43337,43339,43341],{"class":252,"line":2340},[250,43336,17517],{"class":912},[250,43338,1416],{"class":786},[250,43340,17522],{"class":778},[250,43342,1379],{"class":912},[250,43344,43345],{"class":252,"line":2360},[250,43346,986],{"class":912},[250,43348,43349],{"class":252,"line":2397},[250,43350,991],{"class":912},[250,43352,43353],{"class":252,"line":2402},[250,43354,795],{"emptyLinePlaceholder":129},[250,43356,43357,43359,43361,43363],{"class":252,"line":2407},[250,43358,1437],{"class":786},[250,43360,1845],{"class":786},[250,43362,17545],{"class":774},[250,43364,1851],{"class":912},[250,43366,43367,43369,43371,43373,43375,43377,43379],{"class":252,"line":6667},[250,43368,1565],{"class":786},[250,43370,17554],{"class":774},[250,43372,1434],{"class":912},[250,43374,17559],{"class":782},[250,43376,17562],{"class":912},[250,43378,1066],{"class":778},[250,43380,17567],{"class":912},[250,43382,43383],{"class":252,"line":6672},[250,43384,991],{"class":912},[250,43386,43387,43389,43391],{"class":252,"line":6688},[250,43388,13209],{"class":912},[250,43390,13212],{"class":16935},[250,43392,13111],{"class":912},[20,43394,1092,43395,1007],{},[39,43396,17584],{},[47,43398,43399],{"className":16925,"code":17587,"filename":17584,"language":13747,"meta":55,"style":55},[39,43400,43401,43409,43423,43435,43439,43453,43467,43479,43501,43509,43513,43527,43539,43561,43569,43573,43587,43599,43621,43629,43633,43653,43657,43665,43669,43693,43701,43709,43717,43721,43737,43753,43769,43785,43801,43817,43821,43831,43841,43851,43855,43861,43873,43881,43885,43889,43893,43903,43919,43933,43941,43951,43955,43959],{"__ignoreMap":55},[250,43402,43403,43405,43407],{"class":252,"line":253},[250,43404,1962],{"class":912},[250,43406,16936],{"class":16935},[250,43408,13111],{"class":912},[250,43410,43411,43413,43415,43417,43419,43421],{"class":252,"line":113},[250,43412,16943],{"class":912},[250,43414,16946],{"class":16935},[250,43416,16949],{"class":774},[250,43418,1416],{"class":912},[250,43420,16954],{"class":782},[250,43422,13111],{"class":912},[250,43424,43425,43427,43429,43431,43433],{"class":252,"line":110},[250,43426,16961],{"class":912},[250,43428,15],{"class":16935},[250,43430,17620],{"class":912},[250,43432,15],{"class":16935},[250,43434,13111],{"class":912},[250,43436,43437],{"class":252,"line":269},[250,43438,6458],{"class":912},[250,43440,43441,43443,43445,43447,43449,43451],{"class":252,"line":275},[250,43442,16961],{"class":912},[250,43444,16981],{"class":16935},[250,43446,16984],{"class":774},[250,43448,1416],{"class":912},[250,43450,17641],{"class":782},[250,43452,13111],{"class":912},[250,43454,43455,43457,43459,43461,43463,43465],{"class":252,"line":281},[250,43456,16996],{"class":912},[250,43458,16946],{"class":16935},[250,43460,16949],{"class":774},[250,43462,1416],{"class":912},[250,43464,17005],{"class":782},[250,43466,13111],{"class":912},[250,43468,43469,43471,43473,43475,43477],{"class":252,"line":287},[250,43470,17012],{"class":912},[250,43472,17015],{"class":16935},[250,43474,17666],{"class":912},[250,43476,17015],{"class":16935},[250,43478,13111],{"class":912},[250,43480,43481,43483,43485,43487,43489,43491,43493,43495,43497,43499],{"class":252,"line":293},[250,43482,17012],{"class":912},[250,43484,14775],{"class":16935},[250,43486,17031],{"class":774},[250,43488,1416],{"class":912},[250,43490,4485],{"class":782},[250,43492,4974],{"class":774},[250,43494,1416],{"class":912},[250,43496,17689],{"class":782},[250,43498,17044],{"class":774},[250,43500,17047],{"class":912},[250,43502,43503,43505,43507],{"class":252,"line":299},[250,43504,17052],{"class":912},[250,43506,16946],{"class":16935},[250,43508,13111],{"class":912},[250,43510,43511],{"class":252,"line":132},[250,43512,17061],{"class":912},[250,43514,43515,43517,43519,43521,43523,43525],{"class":252,"line":310},[250,43516,16996],{"class":912},[250,43518,16946],{"class":16935},[250,43520,16949],{"class":774},[250,43522,1416],{"class":912},[250,43524,17005],{"class":782},[250,43526,13111],{"class":912},[250,43528,43529,43531,43533,43535,43537],{"class":252,"line":316},[250,43530,17012],{"class":912},[250,43532,17015],{"class":16935},[250,43534,17018],{"class":912},[250,43536,17015],{"class":16935},[250,43538,13111],{"class":912},[250,43540,43541,43543,43545,43547,43549,43551,43553,43555,43557,43559],{"class":252,"line":322},[250,43542,17012],{"class":912},[250,43544,14775],{"class":16935},[250,43546,17031],{"class":774},[250,43548,1416],{"class":912},[250,43550,15116],{"class":782},[250,43552,4974],{"class":774},[250,43554,1416],{"class":912},[250,43556,15116],{"class":782},[250,43558,17044],{"class":774},[250,43560,17047],{"class":912},[250,43562,43563,43565,43567],{"class":252,"line":328},[250,43564,17052],{"class":912},[250,43566,16946],{"class":16935},[250,43568,13111],{"class":912},[250,43570,43571],{"class":252,"line":334},[250,43572,17061],{"class":912},[250,43574,43575,43577,43579,43581,43583,43585],{"class":252,"line":340},[250,43576,16996],{"class":912},[250,43578,16946],{"class":16935},[250,43580,16949],{"class":774},[250,43582,1416],{"class":912},[250,43584,17005],{"class":782},[250,43586,13111],{"class":912},[250,43588,43589,43591,43593,43595,43597],{"class":252,"line":346},[250,43590,17012],{"class":912},[250,43592,17015],{"class":16935},[250,43594,17084],{"class":912},[250,43596,17015],{"class":16935},[250,43598,13111],{"class":912},[250,43600,43601,43603,43605,43607,43609,43611,43613,43615,43617,43619],{"class":252,"line":352},[250,43602,17012],{"class":912},[250,43604,14775],{"class":16935},[250,43606,17031],{"class":774},[250,43608,1416],{"class":912},[250,43610,15139],{"class":782},[250,43612,4974],{"class":774},[250,43614,1416],{"class":912},[250,43616,15139],{"class":782},[250,43618,17044],{"class":774},[250,43620,17047],{"class":912},[250,43622,43623,43625,43627],{"class":252,"line":358},[250,43624,17052],{"class":912},[250,43626,16946],{"class":16935},[250,43628,13111],{"class":912},[250,43630,43631],{"class":252,"line":364},[250,43632,17061],{"class":912},[250,43634,43635,43637,43639,43641,43643,43645,43647,43649,43651],{"class":252,"line":370},[250,43636,16996],{"class":912},[250,43638,17129],{"class":16935},[250,43640,4974],{"class":774},[250,43642,1416],{"class":912},[250,43644,17136],{"class":782},[250,43646,17139],{"class":774},[250,43648,1416],{"class":912},[250,43650,17144],{"class":782},[250,43652,13111],{"class":912},[250,43654,43655],{"class":252,"line":376},[250,43656,17850],{"class":912},[250,43658,43659,43661,43663],{"class":252,"line":382},[250,43660,17052],{"class":912},[250,43662,17129],{"class":16935},[250,43664,13111],{"class":912},[250,43666,43667],{"class":252,"line":388},[250,43668,17061],{"class":912},[250,43670,43671,43673,43675,43677,43679,43681,43683,43685,43687,43689,43691],{"class":252,"line":393},[250,43672,16996],{"class":912},[250,43674,20],{"class":16935},[250,43676,17172],{"class":774},[250,43678,1416],{"class":912},[250,43680,12292],{"class":782},[250,43682,16949],{"class":774},[250,43684,1416],{"class":912},[250,43686,12292],{"class":782},[250,43688,17185],{"class":912},[250,43690,20],{"class":16935},[250,43692,13111],{"class":912},[250,43694,43695,43697,43699],{"class":252,"line":399},[250,43696,17194],{"class":912},[250,43698,16981],{"class":16935},[250,43700,13111],{"class":912},[250,43702,43703,43705,43707],{"class":252,"line":405},[250,43704,17267],{"class":912},[250,43706,16946],{"class":16935},[250,43708,13111],{"class":912},[250,43710,43711,43713,43715],{"class":252,"line":410},[250,43712,13209],{"class":912},[250,43714,16936],{"class":16935},[250,43716,13111],{"class":912},[250,43718,43719],{"class":252,"line":415},[250,43720,795],{"emptyLinePlaceholder":129},[250,43722,43723,43725,43727,43729,43731,43733,43735],{"class":252,"line":420},[250,43724,1962],{"class":912},[250,43726,13212],{"class":16935},[250,43728,17292],{"class":774},[250,43730,17295],{"class":774},[250,43732,1416],{"class":912},[250,43734,13108],{"class":782},[250,43736,13111],{"class":912},[250,43738,43739,43741,43743,43745,43747,43749,43751],{"class":252,"line":426},[250,43740,1181],{"class":786},[250,43742,17937],{"class":778},[250,43744,1187],{"class":786},[250,43746,13496],{"class":774},[250,43748,1434],{"class":912},[250,43750,17317],{"class":782},[250,43752,1885],{"class":912},[250,43754,43755,43757,43759,43761,43763,43765,43767],{"class":252,"line":431},[250,43756,1181],{"class":786},[250,43758,17308],{"class":778},[250,43760,1187],{"class":786},[250,43762,13496],{"class":774},[250,43764,1434],{"class":912},[250,43766,17317],{"class":782},[250,43768,1885],{"class":912},[250,43770,43771,43773,43775,43777,43779,43781,43783],{"class":252,"line":436},[250,43772,1181],{"class":786},[250,43774,17326],{"class":778},[250,43776,1187],{"class":786},[250,43778,13496],{"class":774},[250,43780,1434],{"class":912},[250,43782,17317],{"class":782},[250,43784,1885],{"class":912},[250,43786,43787,43789,43791,43793,43795,43797,43799],{"class":252,"line":442},[250,43788,1181],{"class":786},[250,43790,17343],{"class":778},[250,43792,1187],{"class":786},[250,43794,13496],{"class":774},[250,43796,1434],{"class":912},[250,43798,17352],{"class":778},[250,43800,1885],{"class":912},[250,43802,43803,43805,43807,43809,43811,43813,43815],{"class":252,"line":447},[250,43804,1181],{"class":786},[250,43806,17361],{"class":778},[250,43808,1187],{"class":786},[250,43810,13496],{"class":774},[250,43812,1434],{"class":912},[250,43814,17317],{"class":782},[250,43816,1885],{"class":912},[250,43818,43819],{"class":252,"line":453},[250,43820,795],{"emptyLinePlaceholder":129},[250,43822,43823,43825,43827,43829],{"class":252,"line":459},[250,43824,1437],{"class":786},[250,43826,1845],{"class":786},[250,43828,18024],{"class":774},[250,43830,1851],{"class":912},[250,43832,43833,43835,43837,43839],{"class":252,"line":465},[250,43834,17391],{"class":912},[250,43836,1416],{"class":786},[250,43838,17396],{"class":778},[250,43840,1379],{"class":912},[250,43842,43843,43845,43847,43849],{"class":252,"line":471},[250,43844,17403],{"class":912},[250,43846,1416],{"class":786},[250,43848,17408],{"class":782},[250,43850,1379],{"class":912},[250,43852,43853],{"class":252,"line":2201},[250,43854,1053],{"class":912},[250,43856,43857,43859],{"class":252,"line":2207},[250,43858,14553],{"class":786},[250,43860,1118],{"class":912},[250,43862,43863,43865,43867,43869,43871],{"class":252,"line":2213},[250,43864,5725],{"class":786},[250,43866,17427],{"class":774},[250,43868,1434],{"class":912},[250,43870,18067],{"class":782},[250,43872,4454],{"class":912},[250,43874,43875,43877,43879],{"class":252,"line":2218},[250,43876,17439],{"class":912},[250,43878,17442],{"class":782},[250,43880,927],{"class":912},[250,43882,43883],{"class":252,"line":2223},[250,43884,18082],{"class":912},[250,43886,43887],{"class":252,"line":2239},[250,43888,1547],{"class":912},[250,43890,43891],{"class":252,"line":2244},[250,43892,6458],{"class":912},[250,43894,43895,43897,43899,43901],{"class":252,"line":2267},[250,43896,17462],{"class":774},[250,43898,1434],{"class":912},[250,43900,17467],{"class":782},[250,43902,1885],{"class":912},[250,43904,43905,43907,43909,43911,43913,43915,43917],{"class":252,"line":2301},[250,43906,14609],{"class":912},[250,43908,2164],{"class":786},[250,43910,1440],{"class":912},[250,43912,17480],{"class":1370},[250,43914,1007],{"class":786},[250,43916,1410],{"class":778},[250,43918,1512],{"class":912},[250,43920,43921,43923,43925,43927,43929,43931],{"class":252,"line":2306},[250,43922,17491],{"class":912},[250,43924,1416],{"class":786},[250,43926,17496],{"class":912},[250,43928,1497],{"class":786},[250,43930,18129],{"class":782},[250,43932,1379],{"class":912},[250,43934,43935,43937,43939],{"class":252,"line":2320},[250,43936,14609],{"class":912},[250,43938,17510],{"class":786},[250,43940,1118],{"class":912},[250,43942,43943,43945,43947,43949],{"class":252,"line":2340},[250,43944,17517],{"class":912},[250,43946,1416],{"class":786},[250,43948,17522],{"class":778},[250,43950,1379],{"class":912},[250,43952,43953],{"class":252,"line":2360},[250,43954,986],{"class":912},[250,43956,43957],{"class":252,"line":2397},[250,43958,991],{"class":912},[250,43960,43961,43963,43965],{"class":252,"line":2402},[250,43962,13209],{"class":912},[250,43964,13212],{"class":16935},[250,43966,13111],{"class":912},[72,43968],{},[31,43970,18171],{"id":18170},[20,43972,18174],{},[47,43974,43975],{"className":1010,"code":18177,"filename":18178,"language":1012,"meta":55,"style":55},[39,43976,43977,43993,44015,44037,44041,44057,44067,44073,44089,44097,44107,44115,44125,44129,44133,44137,44153,44169,44179,44189,44193,44197,44203],{"__ignoreMap":55},[250,43978,43979,43981,43983,43985,43987,43989,43991],{"class":252,"line":253},[250,43980,1019],{"class":786},[250,43982,4438],{"class":786},[250,43984,18189],{"class":774},[250,43986,1187],{"class":786},[250,43988,2015],{"class":912},[250,43990,1115],{"class":786},[250,43992,1118],{"class":912},[250,43994,43995,43997,43999,44001,44003,44005,44007,44009,44011,44013],{"class":252,"line":113},[250,43996,1455],{"class":786},[250,43998,14943],{"class":778},[250,44000,1187],{"class":786},[250,44002,18208],{"class":774},[250,44004,1434],{"class":912},[250,44006,18213],{"class":782},[250,44008,13157],{"class":912},[250,44010,1115],{"class":786},[250,44012,14546],{"class":778},[250,44014,1885],{"class":912},[250,44016,44017,44019,44021,44023,44025,44027,44029,44031,44033,44035],{"class":252,"line":110},[250,44018,1455],{"class":786},[250,44020,17343],{"class":778},[250,44022,1187],{"class":786},[250,44024,18208],{"class":774},[250,44026,1434],{"class":912},[250,44028,18236],{"class":782},[250,44030,13157],{"class":912},[250,44032,1115],{"class":786},[250,44034,17396],{"class":778},[250,44036,1885],{"class":912},[250,44038,44039],{"class":252,"line":269},[250,44040,1053],{"class":912},[250,44042,44043,44045,44047,44049,44051,44053,44055],{"class":252,"line":275},[250,44044,1455],{"class":786},[250,44046,18255],{"class":774},[250,44048,1187],{"class":786},[250,44050,2012],{"class":786},[250,44052,2015],{"class":912},[250,44054,1115],{"class":786},[250,44056,1118],{"class":912},[250,44058,44059,44061,44063,44065],{"class":252,"line":281},[250,44060,17517],{"class":912},[250,44062,1416],{"class":786},[250,44064,17396],{"class":778},[250,44066,1379],{"class":912},[250,44068,44069,44071],{"class":252,"line":287},[250,44070,18280],{"class":786},[250,44072,1118],{"class":912},[250,44074,44075,44077,44079,44081,44083,44085,44087],{"class":252,"line":293},[250,44076,18287],{"class":912},[250,44078,1416],{"class":786},[250,44080,1463],{"class":786},[250,44082,17427],{"class":774},[250,44084,1434],{"class":912},[250,44086,18298],{"class":782},[250,44088,1885],{"class":912},[250,44090,44091,44093,44095],{"class":252,"line":299},[250,44092,18305],{"class":912},[250,44094,2164],{"class":786},[250,44096,1118],{"class":912},[250,44098,44099,44101,44103,44105],{"class":252,"line":132},[250,44100,18287],{"class":912},[250,44102,1416],{"class":786},[250,44104,14546],{"class":778},[250,44106,1379],{"class":912},[250,44108,44109,44111,44113],{"class":252,"line":310},[250,44110,18305],{"class":912},[250,44112,17510],{"class":786},[250,44114,1118],{"class":912},[250,44116,44117,44119,44121,44123],{"class":252,"line":316},[250,44118,18332],{"class":912},[250,44120,1416],{"class":786},[250,44122,17522],{"class":778},[250,44124,1379],{"class":912},[250,44126,44127],{"class":252,"line":322},[250,44128,3684],{"class":912},[250,44130,44131],{"class":252,"line":328},[250,44132,1161],{"class":912},[250,44134,44135],{"class":252,"line":334},[250,44136,1053],{"class":912},[250,44138,44139,44141,44143,44145,44147,44149,44151],{"class":252,"line":340},[250,44140,1455],{"class":786},[250,44142,18357],{"class":774},[250,44144,1187],{"class":786},[250,44146,2012],{"class":786},[250,44148,2015],{"class":912},[250,44150,1115],{"class":786},[250,44152,1118],{"class":912},[250,44154,44155,44157,44159,44161,44163,44165,44167],{"class":252,"line":346},[250,44156,5725],{"class":786},[250,44158,17427],{"class":774},[250,44160,1434],{"class":912},[250,44162,18378],{"class":782},[250,44164,18381],{"class":912},[250,44166,17442],{"class":782},[250,44168,17567],{"class":912},[250,44170,44171,44173,44175,44177],{"class":252,"line":352},[250,44172,18390],{"class":912},[250,44174,1416],{"class":786},[250,44176,14546],{"class":778},[250,44178,1379],{"class":912},[250,44180,44181,44183,44185,44187],{"class":252,"line":358},[250,44182,17462],{"class":774},[250,44184,1434],{"class":912},[250,44186,18405],{"class":782},[250,44188,1885],{"class":912},[250,44190,44191],{"class":252,"line":364},[250,44192,1161],{"class":912},[250,44194,44195],{"class":252,"line":370},[250,44196,1053],{"class":912},[250,44198,44199,44201],{"class":252,"line":376},[250,44200,1123],{"class":786},[250,44202,18422],{"class":912},[250,44204,44205],{"class":252,"line":382},[250,44206,10945],{"class":912},[72,44208],{},[31,44210,18432],{"id":18431},[20,44212,18435],{},[24,44214,44215],{"type":26},[561,44216,44218,44223,44228,44233,44238,44243,44248],{"className":44217},[18441],[564,44219,44221,18449],{"className":44220},[18445],[14775,44222],{"disabled":129,"type":18448},[564,44224,44226,18455],{"className":44225},[18445],[14775,44227],{"disabled":129,"type":18448},[564,44229,44231,18461],{"className":44230},[18445],[14775,44232],{"disabled":129,"type":18448},[564,44234,44236,18467],{"className":44235},[18445],[14775,44237],{"disabled":129,"type":18448},[564,44239,44241,18473],{"className":44240},[18445],[14775,44242],{"disabled":129,"type":18448},[564,44244,44246,18479],{"className":44245},[18445],[14775,44247],{"disabled":129,"type":18448},[564,44249,44251,18485],{"className":44250},[18445],[14775,44252],{"disabled":129,"type":18448},[72,44254],{},[31,44256,18491],{"id":18490},[645,44258,44259,44269],{},[648,44260,44261],{},[651,44262,44263,44265,44267],{},[654,44264,8060],{},[654,44266,3289],{},[654,44268,3292],{},[666,44270,44271,44281,44291,44301,44311],{},[651,44272,44273,44275,44279],{},[671,44274,8096],{},[671,44276,44277],{},[39,44278,18514],{},[671,44280,18517],{},[651,44282,44283,44285,44289],{},[671,44284,8096],{},[671,44286,44287],{},[39,44288,18526],{},[671,44290,18529],{},[651,44292,44293,44295,44299],{},[671,44294,8096],{},[671,44296,44297],{},[39,44298,18538],{},[671,44300,18541],{},[651,44302,44303,44305,44309],{},[671,44304,8071],{},[671,44306,44307],{},[39,44308,18550],{},[671,44310,18553],{},[651,44312,44313,44315,44319],{},[671,44314,8071],{},[671,44316,44317],{},[39,44318,18562],{},[671,44320,18565],{},[72,44322],{},[15,44324,3352],{"id":3351},[20,44326,18572],{},[561,44328,44329,44333,44337,44341,44345],{},[564,44330,44331,18580],{},[546,44332,18579],{},[564,44334,44335,18586],{},[546,44336,18585],{},[564,44338,44339,18592],{},[546,44340,18591],{},[564,44342,44343,18598],{},[546,44344,18597],{},[564,44346,44347,18604],{},[546,44348,18603],{},[20,44350,18607],{},[2922,44352,44353,44357,44361,44365],{},[564,44354,44355,18615],{},[546,44356,18614],{},[564,44358,44359,18621],{},[546,44360,18620],{},[564,44362,44363,18627],{},[546,44364,18626],{},[564,44366,44367,18633],{},[546,44368,18632],{},[20,44370,18636],{},[561,44372,44373,44375,44377,44379],{},[564,44374,18641],{},[564,44376,18644],{},[564,44378,18647],{},[564,44380,18650],{},[20,44382,18653],{},[500,44384,18656],{},{"title":55,"searchDepth":110,"depth":110,"links":44386},[44387,44388,44389,44390,44391,44392,44398,44399,44400,44401,44402,44403],{"id":13800,"depth":113,"text":13801},{"id":4181,"depth":113,"text":4182},{"id":13966,"depth":113,"text":13967},{"id":14145,"depth":113,"text":14146},{"id":14640,"depth":113,"text":14641},{"id":15210,"depth":113,"text":15211,"children":44393},[44394,44395,44396,44397],{"id":15214,"depth":110,"text":15215},{"id":15595,"depth":110,"text":15596},{"id":15900,"depth":110,"text":15901},{"id":15961,"depth":110,"text":15962},{"id":16261,"depth":113,"text":16262},{"id":16634,"depth":113,"text":16635},{"id":16916,"depth":113,"text":16917},{"id":18170,"depth":113,"text":18171},{"id":18431,"depth":113,"text":18432},{"id":18490,"depth":113,"text":18491},{"type":12,"value":44405},[44406,44408,44410,44414,44430],[15,44407,541],{"id":540},[20,44409,13764],{},[20,44411,13767,44412,1007],{},[546,44413,13008],{},[561,44415,44416,44418,44420,44422,44424,44426,44428],{},[564,44417,13774],{},[564,44419,13777],{},[564,44421,13780],{},[564,44423,13783],{},[564,44425,13786],{},[564,44427,13789],{},[564,44429,13792],{},[20,44431,13795],{},[18706,8179,18707,18708,18709,18710,18711],{},{"title":13756,"description":18676},"nuxt-auth-guide",{"id":18718,"title":18719,"author":44437,"body":44438,"canonical":115,"categories":115,"date":20020,"description":20021,"excerpt":45500,"extension":118,"img":20050,"keywords":45528,"language":3510,"meta":45529,"navigation":129,"ogImage":115,"path":20057,"rating":275,"readTime":334,"seo":45530,"stem":20059,"tag":11602,"__hash__":20060,"slug":45531},{"name":8,"img":10,"website":535},{"type":12,"value":44439,"toc":45472},[44440,44442,44444,44450,44452,44460,44462,44466,44468,44470,44476,44478,44486,44488,44504,44508,44510,44512,44516,44518,44530,44534,44536,44538,44542,44550,44554,44556,44558,44560,44586,44588,44616,44618,44620,44622,44660,44662,44798,44800,44802,44804,44830,44832,44862,44864,44904,44906,44908,44912,44954,44956,44958,44960,44962,44970,44972,44974,44982,44984,44986,44988,44990,45052,45054,45056,45058,45060,45156,45158,45160,45162,45164,45204,45206,45208,45210,45212,45230,45232,45236,45238,45240,45280,45282,45284,45286,45288,45306,45342,45344,45346,45348,45350,45360,45364,45366,45368,45378,45382,45384,45386,45432,45434,45436,45438,45442,45450,45454,45460,45462,45464,45466,45468,45470],[15,44441,18726],{"id":18725},[31,44443,541],{"id":540},[20,44445,18731,44446,18735,44448,18739],{},[546,44447,18734],{},[546,44449,18738],{},[20,44451,18742],{},[561,44453,44454,44456,44458],{},[564,44455,18747],{},[564,44457,18750],{},[564,44459,18753],{},[20,44461,18756],{},[20,44463,18759,44464,18763],{},[546,44465,18762],{},[72,44467],{},[31,44469,18769],{"id":18768},[20,44471,13238,44472,18775,44474,18779],{},[546,44473,18774],{},[546,44475,18778],{},[20,44477,18782],{},[561,44479,44480,44482,44484],{},[564,44481,18787],{},[564,44483,18790],{},[564,44485,18793],{},[20,44487,18796],{},[561,44489,44490,44492,44494,44496,44498,44500,44502],{},[564,44491,18801],{},[564,44493,18804],{},[564,44495,18807],{},[564,44497,18810],{},[564,44499,18813],{},[564,44501,18816],{},[564,44503,18819],{},[18821,44505,44506],{},[20,44507,18825],{},[72,44509],{},[31,44511,18831],{"id":18830},[20,44513,18834,44514,18838],{},[546,44515,18837],{},[2459,44517,18842],{"id":18841},[561,44519,44520,44522,44524,44526,44528],{},[564,44521,18847],{},[564,44523,18850],{},[564,44525,18853],{},[564,44527,18856],{},[564,44529,18859],{},[20,44531,18862,44532,2230],{},[546,44533,18865],{},[72,44535],{},[31,44537,18871],{"id":18870},[20,44539,18874,44540,1007],{},[546,44541,18877],{},[2922,44543,44544,44546,44548],{},[564,44545,18882],{},[564,44547,18885],{},[564,44549,18888],{},[20,44551,18891,44552,2230],{},[546,44553,18894],{},[72,44555],{},[31,44557,18900],{"id":18899},[2459,44559,18904],{"id":18903},[47,44561,44562],{"className":758,"code":18907,"language":761,"meta":55,"style":55},[39,44563,44564,44574,44580],{"__ignoreMap":55},[250,44565,44566,44568,44570,44572],{"class":252,"line":253},[250,44567,4200],{"class":774},[250,44569,3231],{"class":782},[250,44571,862],{"class":782},[250,44573,18920],{"class":782},[250,44575,44576,44578],{"class":252,"line":113},[250,44577,874],{"class":778},[250,44579,18920],{"class":782},[250,44581,44582,44584],{"class":252,"line":110},[250,44583,4226],{"class":774},[250,44585,896],{"class":782},[20,44587,18935],{},[47,44589,44590],{"className":12725,"code":18938,"language":12727,"meta":55,"style":55},[39,44591,44592,44596,44600,44604,44608,44612],{"__ignoreMap":55},[250,44593,44594],{"class":252,"line":253},[250,44595,18945],{},[250,44597,44598],{"class":252,"line":113},[250,44599,18950],{},[250,44601,44602],{"class":252,"line":110},[250,44603,18955],{},[250,44605,44606],{"class":252,"line":269},[250,44607,18960],{},[250,44609,44610],{"class":252,"line":275},[250,44611,18965],{},[250,44613,44614],{"class":252,"line":281},[250,44615,18970],{},[20,44617,18973],{},[72,44619],{},[2459,44621,18979],{"id":18978},[47,44623,44624],{"className":1010,"code":18982,"language":1012,"meta":55,"style":55},[39,44625,44626,44630,44640,44648,44656],{"__ignoreMap":55},[250,44627,44628],{"class":252,"line":253},[250,44629,18989],{"class":768},[250,44631,44632,44634,44636,44638],{"class":252,"line":113},[250,44633,1019],{"class":786},[250,44635,1022],{"class":786},[250,44637,1025],{"class":774},[250,44639,1028],{"class":912},[250,44641,44642,44644,44646],{"class":252,"line":110},[250,44643,19004],{"class":912},[250,44645,1066],{"class":778},[250,44647,927],{"class":912},[250,44649,44650,44652,44654],{"class":252,"line":269},[250,44651,19013],{"class":912},[250,44653,19016],{"class":782},[250,44655,8695],{"class":912},[250,44657,44658],{"class":252,"line":275},[250,44659,474],{"class":912},[20,44661,19025],{},[47,44663,44664],{"className":16925,"code":19028,"language":13747,"meta":55,"style":55},[39,44665,44666,44670,44678,44692,44702,44710,44718,44722,44732,44738,44754,44766,44776,44786,44790],{"__ignoreMap":55},[250,44667,44668],{"class":252,"line":253},[250,44669,19035],{"class":768},[250,44671,44672,44674,44676],{"class":252,"line":113},[250,44673,1962],{"class":912},[250,44675,16936],{"class":16935},[250,44677,13111],{"class":912},[250,44679,44680,44682,44684,44686,44688,44690],{"class":252,"line":110},[250,44681,16943],{"class":912},[250,44683,17129],{"class":16935},[250,44685,16949],{"class":774},[250,44687,1416],{"class":912},[250,44689,19056],{"class":782},[250,44691,13111],{"class":912},[250,44693,44694,44696,44698,44700],{"class":252,"line":269},[250,44695,16961],{"class":912},[250,44697,19065],{"class":16935},[250,44699,2287],{"class":19068},[250,44701,13111],{"class":912},[250,44703,44704,44706,44708],{"class":252,"line":275},[250,44705,17267],{"class":912},[250,44707,17129],{"class":16935},[250,44709,13111],{"class":912},[250,44711,44712,44714,44716],{"class":252,"line":281},[250,44713,13209],{"class":912},[250,44715,16936],{"class":16935},[250,44717,13111],{"class":912},[250,44719,44720],{"class":252,"line":287},[250,44721,795],{"emptyLinePlaceholder":129},[250,44723,44724,44726,44728,44730],{"class":252,"line":293},[250,44725,1962],{"class":912},[250,44727,500],{"class":16935},[250,44729,19099],{"class":774},[250,44731,13111],{"class":912},[250,44733,44734,44736],{"class":252,"line":299},[250,44735,19106],{"class":774},[250,44737,1118],{"class":912},[250,44739,44740,44742,44744,44746,44748,44750,44752],{"class":252,"line":132},[250,44741,19113],{"class":778},[250,44743,921],{"class":912},[250,44745,19118],{"class":778},[250,44747,19121],{"class":786},[250,44749,19124],{"class":778},[250,44751,19121],{"class":786},[250,44753,1379],{"class":912},[250,44755,44756,44758,44760,44762,44764],{"class":252,"line":310},[250,44757,19133],{"class":778},[250,44759,921],{"class":912},[250,44761,19138],{"class":778},[250,44763,19121],{"class":786},[250,44765,1379],{"class":912},[250,44767,44768,44770,44772,44774],{"class":252,"line":316},[250,44769,19147],{"class":778},[250,44771,921],{"class":912},[250,44773,19152],{"class":778},[250,44775,1379],{"class":912},[250,44777,44778,44780,44782,44784],{"class":252,"line":322},[250,44779,19159],{"class":778},[250,44781,921],{"class":912},[250,44783,19164],{"class":778},[250,44785,1379],{"class":912},[250,44787,44788],{"class":252,"line":328},[250,44789,991],{"class":912},[250,44791,44792,44794,44796],{"class":252,"line":334},[250,44793,13209],{"class":912},[250,44795,500],{"class":16935},[250,44797,13111],{"class":912},[72,44799],{},[31,44801,19184],{"id":19183},[2459,44803,19188],{"id":19187},[47,44805,44806],{"className":758,"code":19191,"language":761,"meta":55,"style":55},[39,44807,44808,44818,44824],{"__ignoreMap":55},[250,44809,44810,44812,44814,44816],{"class":252,"line":253},[250,44811,4200],{"class":774},[250,44813,3231],{"class":782},[250,44815,862],{"class":782},[250,44817,19204],{"class":782},[250,44819,44820,44822],{"class":252,"line":113},[250,44821,874],{"class":778},[250,44823,19204],{"class":782},[250,44825,44826,44828],{"class":252,"line":110},[250,44827,4226],{"class":774},[250,44829,896],{"class":782},[20,44831,19219],{},[47,44833,44834],{"className":1010,"code":19222,"language":1012,"meta":55,"style":55},[39,44835,44836,44840,44850,44858],{"__ignoreMap":55},[250,44837,44838],{"class":252,"line":253},[250,44839,19229],{"class":768},[250,44841,44842,44844,44846,44848],{"class":252,"line":113},[250,44843,1019],{"class":786},[250,44845,1022],{"class":786},[250,44847,1025],{"class":774},[250,44849,1028],{"class":912},[250,44851,44852,44854,44856],{"class":252,"line":110},[250,44853,19244],{"class":912},[250,44855,19247],{"class":782},[250,44857,8695],{"class":912},[250,44859,44860],{"class":252,"line":269},[250,44861,474],{"class":912},[20,44863,19256],{},[47,44865,44866],{"className":16925,"code":19259,"language":13747,"meta":55,"style":55},[39,44867,44868,44876,44884,44888,44896],{"__ignoreMap":55},[250,44869,44870,44872,44874],{"class":252,"line":253},[250,44871,1962],{"class":912},[250,44873,16936],{"class":16935},[250,44875,13111],{"class":912},[250,44877,44878,44880,44882],{"class":252,"line":113},[250,44879,16943],{"class":912},[250,44881,19276],{"class":16935},[250,44883,13111],{"class":912},[250,44885,44886],{"class":252,"line":110},[250,44887,19283],{"class":912},[250,44889,44890,44892,44894],{"class":252,"line":269},[250,44891,17267],{"class":912},[250,44893,19276],{"class":16935},[250,44895,13111],{"class":912},[250,44897,44898,44900,44902],{"class":252,"line":275},[250,44899,13209],{"class":912},[250,44901,16936],{"class":16935},[250,44903,13111],{"class":912},[72,44905],{},[31,44907,19305],{"id":19304},[20,44909,19308,44910,19312],{},[546,44911,19311],{},[47,44913,44914],{"className":1010,"code":19315,"language":1012,"meta":55,"style":55},[39,44915,44916,44926,44930,44936,44942,44946,44950],{"__ignoreMap":55},[250,44917,44918,44920,44922,44924],{"class":252,"line":253},[250,44919,1019],{"class":786},[250,44921,1022],{"class":786},[250,44923,1025],{"class":774},[250,44925,1028],{"class":912},[250,44927,44928],{"class":252,"line":113},[250,44929,19332],{"class":912},[250,44931,44932,44934],{"class":252,"line":110},[250,44933,19337],{"class":782},[250,44935,927],{"class":912},[250,44937,44938,44940],{"class":252,"line":269},[250,44939,19344],{"class":782},[250,44941,927],{"class":912},[250,44943,44944],{"class":252,"line":275},[250,44945,19351],{"class":782},[250,44947,44948],{"class":252,"line":281},[250,44949,19356],{"class":912},[250,44951,44952],{"class":252,"line":287},[250,44953,474],{"class":912},[20,44955,19363],{},[72,44957],{},[31,44959,19369],{"id":19368},[20,44961,19372],{},[47,44963,44964],{"className":12725,"code":19375,"language":12727,"meta":55,"style":55},[39,44965,44966],{"__ignoreMap":55},[250,44967,44968],{"class":252,"line":253},[250,44969,19375],{},[20,44971,19384],{},[20,44973,19387],{},[47,44975,44976],{"className":12725,"code":19390,"language":12727,"meta":55,"style":55},[39,44977,44978],{"__ignoreMap":55},[250,44979,44980],{"class":252,"line":253},[250,44981,19390],{},[20,44983,19399],{},[72,44985],{},[31,44987,19405],{"id":19404},[20,44989,19408],{},[47,44991,44992],{"className":16925,"code":19411,"language":13747,"meta":55,"style":55},[39,44993,44994,44998,45006,45014,45026,45036,45044],{"__ignoreMap":55},[250,44995,44996],{"class":252,"line":253},[250,44997,19418],{"class":768},[250,44999,45000,45002,45004],{"class":252,"line":113},[250,45001,1962],{"class":912},[250,45003,16936],{"class":16935},[250,45005,13111],{"class":912},[250,45007,45008,45010,45012],{"class":252,"line":110},[250,45009,16943],{"class":912},[250,45011,16946],{"class":16935},[250,45013,13111],{"class":912},[250,45015,45016,45018,45020,45022,45024],{"class":252,"line":269},[250,45017,16961],{"class":912},[250,45019,19441],{"class":16935},[250,45021,19444],{"class":912},[250,45023,19441],{"class":16935},[250,45025,13111],{"class":912},[250,45027,45028,45030,45032,45034],{"class":252,"line":275},[250,45029,16961],{"class":912},[250,45031,19065],{"class":16935},[250,45033,2287],{"class":19068},[250,45035,13111],{"class":912},[250,45037,45038,45040,45042],{"class":252,"line":281},[250,45039,17267],{"class":912},[250,45041,16946],{"class":16935},[250,45043,13111],{"class":912},[250,45045,45046,45048,45050],{"class":252,"line":287},[250,45047,13209],{"class":912},[250,45049,16936],{"class":16935},[250,45051,13111],{"class":912},[20,45053,19477],{},[72,45055],{},[31,45057,19483],{"id":19482},[20,45059,19486],{},[47,45061,45062],{"className":1010,"code":19489,"language":1012,"meta":55,"style":55},[39,45063,45064,45068,45084,45106,45110,45126,45138,45142,45146,45152],{"__ignoreMap":55},[250,45065,45066],{"class":252,"line":253},[250,45067,19496],{"class":768},[250,45069,45070,45072,45074,45076,45078,45080,45082],{"class":252,"line":113},[250,45071,1019],{"class":786},[250,45073,4438],{"class":786},[250,45075,18189],{"class":774},[250,45077,1187],{"class":786},[250,45079,2015],{"class":912},[250,45081,1115],{"class":786},[250,45083,1118],{"class":912},[250,45085,45086,45088,45090,45092,45094,45096,45098,45100,45102,45104],{"class":252,"line":110},[250,45087,1455],{"class":786},[250,45089,14943],{"class":778},[250,45091,1187],{"class":786},[250,45093,18208],{"class":774},[250,45095,1434],{"class":912},[250,45097,19527],{"class":782},[250,45099,13157],{"class":912},[250,45101,1115],{"class":786},[250,45103,14546],{"class":778},[250,45105,4852],{"class":912},[250,45107,45108],{"class":252,"line":269},[250,45109,795],{"emptyLinePlaceholder":129},[250,45111,45112,45114,45116,45118,45120,45122,45124],{"class":252,"line":275},[250,45113,1455],{"class":786},[250,45115,19546],{"class":774},[250,45117,1187],{"class":786},[250,45119,2012],{"class":786},[250,45121,2015],{"class":912},[250,45123,1115],{"class":786},[250,45125,1118],{"class":912},[250,45127,45128,45130,45132,45134,45136],{"class":252,"line":281},[250,45129,18390],{"class":912},[250,45131,1416],{"class":786},[250,45133,19565],{"class":912},[250,45135,19568],{"class":782},[250,45137,8690],{"class":912},[250,45139,45140],{"class":252,"line":287},[250,45141,986],{"class":912},[250,45143,45144],{"class":252,"line":293},[250,45145,795],{"emptyLinePlaceholder":129},[250,45147,45148,45150],{"class":252,"line":299},[250,45149,1123],{"class":786},[250,45151,19585],{"class":912},[250,45153,45154],{"class":252,"line":132},[250,45155,991],{"class":912},[20,45157,19592],{},[72,45159],{},[31,45161,19598],{"id":19597},[20,45163,19601],{},[47,45165,45166],{"className":1010,"code":19604,"language":1012,"meta":55,"style":55},[39,45167,45168,45178,45182,45186,45192,45196,45200],{"__ignoreMap":55},[250,45169,45170,45172,45174,45176],{"class":252,"line":253},[250,45171,1019],{"class":786},[250,45173,1022],{"class":786},[250,45175,1025],{"class":774},[250,45177,1028],{"class":912},[250,45179,45180],{"class":252,"line":113},[250,45181,8929],{"class":912},[250,45183,45184],{"class":252,"line":110},[250,45185,8934],{"class":912},[250,45187,45188,45190],{"class":252,"line":269},[250,45189,19629],{"class":912},[250,45191,19632],{"class":782},[250,45193,45194],{"class":252,"line":275},[250,45195,3684],{"class":912},[250,45197,45198],{"class":252,"line":281},[250,45199,986],{"class":912},[250,45201,45202],{"class":252,"line":287},[250,45203,474],{"class":912},[20,45205,19647],{},[72,45207],{},[31,45209,19653],{"id":19652},[20,45211,19656],{},[47,45213,45214],{"className":758,"code":19659,"language":761,"meta":55,"style":55},[39,45215,45216,45222],{"__ignoreMap":55},[250,45217,45218,45220],{"class":252,"line":253},[250,45219,874],{"class":778},[250,45221,18920],{"class":782},[250,45223,45224,45226,45228],{"class":252,"line":113},[250,45225,4226],{"class":774},[250,45227,808],{"class":782},[250,45229,19676],{"class":782},[20,45231,19679],{},[18821,45233,45234],{},[20,45235,19684],{},[72,45237],{},[31,45239,19690],{"id":19689},[47,45241,45242],{"className":12725,"code":19693,"language":12727,"meta":55,"style":55},[39,45243,45244,45248,45252,45256,45260,45264,45268,45272,45276],{"__ignoreMap":55},[250,45245,45246],{"class":252,"line":253},[250,45247,19700],{},[250,45249,45250],{"class":252,"line":113},[250,45251,19705],{},[250,45253,45254],{"class":252,"line":110},[250,45255,19710],{},[250,45257,45258],{"class":252,"line":269},[250,45259,19715],{},[250,45261,45262],{"class":252,"line":275},[250,45263,19720],{},[250,45265,45266],{"class":252,"line":281},[250,45267,19725],{},[250,45269,45270],{"class":252,"line":287},[250,45271,19730],{},[250,45273,45274],{"class":252,"line":293},[250,45275,19735],{},[250,45277,45278],{"class":252,"line":299},[250,45279,19740],{},[20,45281,19743],{},[72,45283],{},[31,45285,19749],{"id":19748},[20,45287,19752],{},[561,45289,45290,45294,45298,45302],{},[564,45291,45292,19760],{},[39,45293,19759],{},[564,45295,45296,19765],{},[39,45297,18707],{},[564,45299,45300,19771],{},[39,45301,19770],{},[564,45303,45304,19777],{},[39,45305,19776],{},[47,45307,45308],{"className":1010,"code":19780,"language":1012,"meta":55,"style":55},[39,45309,45310,45316,45322,45328,45334,45338],{"__ignoreMap":55},[250,45311,45312,45314],{"class":252,"line":253},[250,45313,19787],{"class":774},[250,45315,19790],{"class":912},[250,45317,45318,45320],{"class":252,"line":113},[250,45319,19795],{"class":782},[250,45321,927],{"class":912},[250,45323,45324,45326],{"class":252,"line":110},[250,45325,19802],{"class":782},[250,45327,927],{"class":912},[250,45329,45330,45332],{"class":252,"line":269},[250,45331,19809],{"class":782},[250,45333,927],{"class":912},[250,45335,45336],{"class":252,"line":275},[250,45337,19816],{"class":782},[250,45339,45340],{"class":252,"line":281},[250,45341,8695],{"class":912},[20,45343,19823],{},[72,45345],{},[31,45347,19829],{"id":19828},[20,45349,19832],{},[561,45351,45352,45354,45356,45358],{},[564,45353,18804],{},[564,45355,18801],{},[564,45357,18807],{},[564,45359,18810],{},[20,45361,19845,45362,2230],{},[546,45363,19848],{},[72,45365],{},[31,45367,19854],{"id":19853},[561,45369,45370,45372,45374,45376],{},[564,45371,19859],{},[564,45373,19862],{},[564,45375,19865],{},[564,45377,19868],{},[20,45379,19871,45380,19875],{},[546,45381,19874],{},[72,45383],{},[31,45385,19881],{"id":19880},[645,45387,45388,45398],{},[648,45389,45390],{},[651,45391,45392,45394,45396],{},[654,45393,19890],{},[654,45395,19893],{},[654,45397,19896],{},[666,45399,45400,45408,45416,45424],{},[651,45401,45402,45404,45406],{},[671,45403,19903],{},[671,45405,19906],{},[671,45407,19909],{},[651,45409,45410,45412,45414],{},[671,45411,19914],{},[671,45413,19906],{},[671,45415,19909],{},[651,45417,45418,45420,45422],{},[671,45419,19923],{},[671,45421,19906],{},[671,45423,19909],{},[651,45425,45426,45428,45430],{},[671,45427,19932],{},[671,45429,19935],{},[671,45431,19906],{},[20,45433,19940],{},[72,45435],{},[31,45437,19946],{"id":19945},[20,45439,45440],{},[546,45441,19951],{},[561,45443,45444,45446,45448],{},[564,45445,19956],{},[564,45447,19959],{},[564,45449,19962],{},[20,45451,45452],{},[546,45453,19967],{},[561,45455,45456,45458],{},[564,45457,19972],{},[564,45459,19975],{},[72,45461],{},[31,45463,3352],{"id":3351},[20,45465,19982],{},[20,45467,19985],{},[20,45469,19988],{},[500,45471,19991],{},{"title":55,"searchDepth":110,"depth":110,"links":45473},[45474,45475,45476,45479,45480,45484,45487,45488,45489,45490,45491,45492,45493,45494,45495,45496,45497,45498,45499],{"id":540,"depth":113,"text":541},{"id":18768,"depth":113,"text":18769},{"id":18830,"depth":113,"text":18831,"children":45477},[45478],{"id":18841,"depth":110,"text":18842},{"id":18870,"depth":113,"text":18871},{"id":18899,"depth":113,"text":18900,"children":45481},[45482,45483],{"id":18903,"depth":110,"text":18904},{"id":18978,"depth":110,"text":18979},{"id":19183,"depth":113,"text":19184,"children":45485},[45486],{"id":19187,"depth":110,"text":19188},{"id":19304,"depth":113,"text":19305},{"id":19368,"depth":113,"text":19369},{"id":19404,"depth":113,"text":19405},{"id":19482,"depth":113,"text":19483},{"id":19597,"depth":113,"text":19598},{"id":19652,"depth":113,"text":19653},{"id":19689,"depth":113,"text":19690},{"id":19748,"depth":113,"text":19749},{"id":19828,"depth":113,"text":19829},{"id":19853,"depth":113,"text":19854},{"id":19880,"depth":113,"text":19881},{"id":19945,"depth":113,"text":19946},{"id":3351,"depth":113,"text":3352},{"type":12,"value":45501},[45502,45504,45506,45512,45514,45522,45524],[15,45503,18726],{"id":18725},[31,45505,541],{"id":540},[20,45507,18731,45508,18735,45510,18739],{},[546,45509,18734],{},[546,45511,18738],{},[20,45513,18742],{},[561,45515,45516,45518,45520],{},[564,45517,18747],{},[564,45519,18750],{},[564,45521,18753],{},[20,45523,18756],{},[20,45525,18759,45526,18763],{},[546,45527,18762],{},[18706,20052,20053,13747,20054,20055],{},{"title":18719,"description":20021},"nuxt-layer",{"id":20062,"title":20063,"author":45533,"body":45534,"canonical":115,"categories":115,"date":20144,"description":20145,"excerpt":45584,"extension":118,"img":119,"keywords":45590,"language":127,"meta":45591,"navigation":129,"ogImage":115,"path":20154,"rating":269,"readTime":132,"seo":45592,"stem":20156,"tag":125,"__hash__":20157,"slug":45593},{"name":8,"website":9,"img":10},{"type":12,"value":45535,"toc":45576},[45536,45538,45540,45542,45547,45549,45553,45555,45559,45561,45566,45568,45570,45572,45574],[15,45537,20070],{"id":20069},[20,45539,20073],{},[15,45541,20077],{"id":20076},[47,45543,45545],{"className":45544,"code":20081,"language":52},[50],[39,45546,20081],{"__ignoreMap":55},[31,45548,20087],{"id":20086},[20,45550,20090,45551,20094],{},[39,45552,20093],{},[31,45554,20098],{"id":20097},[20,45556,20101,45557],{},[20103,45558,20105],{},[20,45560,20108],{},[2459,45562,20112,45563],{"id":20111},[203,45564,20117],{"href":20115,"rel":45565},[207],[31,45567,20121],{"id":20120},[20,45569,20124],{},[31,45571,20128],{"id":20127},[20,45573,20131],{},[20,45575,20134],{},{"title":55,"searchDepth":110,"depth":110,"links":45577},[45578,45579,45582,45583],{"id":20086,"depth":113,"text":20087},{"id":20097,"depth":113,"text":20098,"children":45580},[45581],{"id":20111,"depth":110,"text":20141},{"id":20120,"depth":113,"text":20121},{"id":20127,"depth":113,"text":20128},{"type":12,"value":45585},[45586,45588],[15,45587,20070],{"id":20069},[20,45589,20073],{},[121,122,123,124,125,126],{},{"title":20063,"description":20145},"nuxt3-lets-talk",{"id":20159,"title":20160,"author":45595,"body":45596,"canonical":115,"categories":115,"date":20884,"description":20885,"excerpt":46136,"extension":118,"img":20050,"keywords":46152,"language":3510,"meta":46153,"navigation":129,"ogImage":115,"path":20906,"rating":275,"readTime":132,"seo":46154,"stem":20908,"tag":3515,"__hash__":20909,"slug":46155},{"name":8,"img":10,"website":535},{"type":12,"value":45597,"toc":46102},[45598,45600,45606,45612,45614,45616,45678,45680,45682,45684,45688,45698,45722,45724,45726,45730,45738,45754,45756,45760,45762,45764,45766,45768,45778,45780,45788,45790,45792,45798,45800,45806,45808,45810,45812,45814,45816,45844,45846,45854,45856,45860,45862,45864,45872,45874,45880,45882,45888,45890,45892,45894,45898,45906,45908,45916,45918,45920,45926,45928,45934,45936,45938,45940,45950,45960,45964,45966,45976,45978,45986,45988,45990,45992,45994,45996,45998,46008,46012,46014,46016,46024,46026,46028,46030,46032,46040,46042,46050,46052,46054,46056,46060,46070,46072,46076,46086,46088,46090,46094,46096,46098,46100],[15,45599,541],{"id":540},[20,45601,20168,45602,20171,45604,20174],{},[546,45603,3566],{},[546,45605,3529],{},[20,45607,20177,45608,20180,45610,20183],{},[546,45609,3558],{},[546,45611,3566],{},[15,45613,748],{"id":747},[31,45615,20189],{"id":20188},[645,45617,45618,45628],{},[648,45619,45620],{},[651,45621,45622,45624,45626],{},[654,45623,19890],{},[654,45625,3529],{},[654,45627,3566],{},[666,45629,45630,45638,45646,45654,45662,45670],{},[651,45631,45632,45634,45636],{},[671,45633,20208],{},[671,45635,3533],{},[671,45637,20213],{},[651,45639,45640,45642,45644],{},[671,45641,20218],{},[671,45643,20221],{},[671,45645,20224],{},[651,45647,45648,45650,45652],{},[671,45649,20229],{},[671,45651,20232],{},[671,45653,20235],{},[651,45655,45656,45658,45660],{},[671,45657,20240],{},[671,45659,20243],{},[671,45661,20246],{},[651,45663,45664,45666,45668],{},[671,45665,20251],{},[671,45667,20254],{},[671,45669,20257],{},[651,45671,45672,45674,45676],{},[671,45673,20262],{},[671,45675,20265],{},[671,45677,20268],{},[72,45679],{},[31,45681,20274],{"id":20273},[2459,45683,3558],{"id":4070},[20,45685,20279,45686,20282],{},[546,45687,3533],{},[561,45689,45690,45692,45694,45696],{},[564,45691,20287],{},[564,45693,20290],{},[564,45695,20293],{},[564,45697,20296],{},[47,45699,45700],{"className":3660,"code":20299,"language":3662,"meta":55,"style":55},[39,45701,45702,45706,45710,45714,45718],{"__ignoreMap":55},[250,45703,45704],{"class":252,"line":253},[250,45705,3669],{},[250,45707,45708],{"class":252,"line":113},[250,45709,3674],{},[250,45711,45712],{"class":252,"line":110},[250,45713,20314],{},[250,45715,45716],{"class":252,"line":269},[250,45717,3684],{},[250,45719,45720],{"class":252,"line":275},[250,45721,991],{},[20,45723,20325],{},[2459,45725,3566],{"id":20328},[20,45727,20331,45728,20335],{},[546,45729,20334],{},[561,45731,45732,45734,45736],{},[564,45733,20340],{},[564,45735,20343],{},[564,45737,20346],{},[47,45739,45740],{"className":20349,"code":20350,"language":20351,"meta":55,"style":55},[39,45741,45742,45746,45750],{"__ignoreMap":55},[250,45743,45744],{"class":252,"line":253},[250,45745,20358],{},[250,45747,45748],{"class":252,"line":113},[250,45749,20363],{},[250,45751,45752],{"class":252,"line":110},[250,45753,991],{},[20,45755,20370],{},[20,45757,45758,20376],{},[546,45759,20375],{},[72,45761],{},[31,45763,20382],{"id":20381},[2459,45765,20386],{"id":20385},[20,45767,20389],{},[561,45769,45770,45772,45774,45776],{},[564,45771,20394],{},[564,45773,20397],{},[564,45775,20400],{},[564,45777,20403],{},[20,45779,20406],{},[561,45781,45782,45784,45786],{},[564,45783,20411],{},[564,45785,20414],{},[564,45787,20417],{},[2459,45789,20421],{"id":20420},[20,45791,20424],{},[561,45793,45794,45796],{},[564,45795,20429],{},[564,45797,20432],{},[20,45799,20435],{},[561,45801,45802,45804],{},[564,45803,20440],{},[564,45805,20443],{},[20,45807,20446],{},[72,45809],{},[31,45811,20452],{"id":20451},[2459,45813,20456],{"id":20455},[20,45815,20459],{},[47,45817,45818],{"className":3660,"code":20462,"language":3662,"meta":55,"style":55},[39,45819,45820,45824,45828,45832,45836,45840],{"__ignoreMap":55},[250,45821,45822],{"class":252,"line":253},[250,45823,20469],{},[250,45825,45826],{"class":252,"line":113},[250,45827,20474],{},[250,45829,45830],{"class":252,"line":110},[250,45831,20479],{},[250,45833,45834],{"class":252,"line":269},[250,45835,20484],{},[250,45837,45838],{"class":252,"line":275},[250,45839,3684],{},[250,45841,45842],{"class":252,"line":281},[250,45843,991],{},[20,45845,20495],{},[561,45847,45848,45850,45852],{},[564,45849,20500],{},[564,45851,20503],{},[564,45853,20506],{},[20,45855,20509],{},[561,45857,45858],{},[564,45859,20514],{},[2459,45861,20518],{"id":20517},[20,45863,20521],{},[47,45865,45866],{"className":20349,"code":20524,"language":20351,"meta":55,"style":55},[39,45867,45868],{"__ignoreMap":55},[250,45869,45870],{"class":252,"line":253},[250,45871,20524],{},[20,45873,20495],{},[561,45875,45876,45878],{},[564,45877,20537],{},[564,45879,20540],{},[20,45881,20509],{},[561,45883,45884,45886],{},[564,45885,20547],{},[564,45887,20550],{},[72,45889],{},[31,45891,3710],{"id":3709},[2459,45893,3558],{"id":20557},[20,45895,3647,45896,20562],{},[546,45897,3716],{},[47,45899,45900],{"className":3660,"code":3724,"language":3662,"meta":55,"style":55},[39,45901,45902],{"__ignoreMap":55},[250,45903,45904],{"class":252,"line":253},[250,45905,3724],{},[20,45907,20573],{},[561,45909,45910,45912,45914],{},[564,45911,20578],{},[564,45913,20581],{},[564,45915,20584],{},[2459,45917,3566],{"id":20587},[20,45919,20590],{},[561,45921,45922,45924],{},[564,45923,20595],{},[564,45925,20598],{},[20,45927,20601],{},[561,45929,45930,45932],{},[564,45931,20606],{},[564,45933,20609],{},[72,45935],{},[31,45937,20615],{"id":20614},[2459,45939,20619],{"id":20618},[561,45941,45942,45944,45946,45948],{},[564,45943,20624],{},[564,45945,20627],{},[564,45947,20630],{},[564,45949,20633],{},[47,45951,45952],{"className":758,"code":20636,"language":761,"meta":55,"style":55},[39,45953,45954],{"__ignoreMap":55},[250,45955,45956,45958],{"class":252,"line":253},[250,45957,20643],{"class":774},[250,45959,20646],{"class":782},[20,45961,20649,45962,2230],{},[546,45963,20652],{},[2459,45965,20656],{"id":20655},[561,45967,45968,45970,45972,45974],{},[564,45969,20661],{},[564,45971,20664],{},[564,45973,20667],{},[564,45975,20670],{},[20,45977,20673],{},[561,45979,45980,45982,45984],{},[564,45981,20678],{},[564,45983,20681],{},[564,45985,20684],{},[2459,45987,20688],{"id":20687},[20,45989,20691],{},[72,45991],{},[31,45993,3955],{"id":3954},[2459,45995,3558],{"id":20698},[20,45997,20701],{},[561,45999,46000,46002,46004,46006],{},[564,46001,20706],{},[564,46003,20709],{},[564,46005,20712],{},[564,46007,20715],{},[20,46009,20718,46010,2230],{},[546,46011,20721],{},[2459,46013,3566],{"id":20724},[20,46015,20727],{},[561,46017,46018,46020,46022],{},[564,46019,20732],{},[564,46021,20735],{},[564,46023,20738],{},[20,46025,20741],{},[72,46027],{},[31,46029,20747],{"id":20746},[2459,46031,3566],{"id":20750},[561,46033,46034,46036,46038],{},[564,46035,20755],{},[564,46037,20758],{},[564,46039,20761],{},[2459,46041,3558],{"id":20764},[561,46043,46044,46046,46048],{},[564,46045,20769],{},[564,46047,20772],{},[564,46049,20775],{},[20,46051,20778],{},[72,46053],{},[31,46055,20784],{"id":20783},[20,46057,20787,46058,20790],{},[546,46059,3558],{},[561,46061,46062,46064,46066,46068],{},[564,46063,20795],{},[564,46065,20798],{},[564,46067,20801],{},[564,46069,20804],{},[31,46071,20808],{"id":20807},[20,46073,20787,46074,20790],{},[546,46075,3566],{},[561,46077,46078,46080,46082,46084],{},[564,46079,20817],{},[564,46081,20820],{},[564,46083,20823],{},[564,46085,20826],{},[72,46087],{},[15,46089,3352],{"id":3351},[20,46091,20833,46092,20837],{},[546,46093,20836],{},[20,46095,20840],{},[20,46097,20843],{},[20,46099,20846],{},[500,46101,20849],{},{"title":55,"searchDepth":110,"depth":110,"links":46103},[46104,46105,46109,46113,46117,46121,46126,46130,46134,46135],{"id":20188,"depth":113,"text":20189},{"id":20273,"depth":113,"text":20274,"children":46106},[46107,46108],{"id":4070,"depth":110,"text":3558},{"id":20328,"depth":110,"text":3566},{"id":20381,"depth":113,"text":20382,"children":46110},[46111,46112],{"id":20385,"depth":110,"text":20386},{"id":20420,"depth":110,"text":20421},{"id":20451,"depth":113,"text":20452,"children":46114},[46115,46116],{"id":20455,"depth":110,"text":20456},{"id":20517,"depth":110,"text":20518},{"id":3709,"depth":113,"text":3710,"children":46118},[46119,46120],{"id":20557,"depth":110,"text":3558},{"id":20587,"depth":110,"text":3566},{"id":20614,"depth":113,"text":20615,"children":46122},[46123,46124,46125],{"id":20618,"depth":110,"text":20619},{"id":20655,"depth":110,"text":20656},{"id":20687,"depth":110,"text":20688},{"id":3954,"depth":113,"text":3955,"children":46127},[46128,46129],{"id":20698,"depth":110,"text":3558},{"id":20724,"depth":110,"text":3566},{"id":20746,"depth":113,"text":20747,"children":46131},[46132,46133],{"id":20750,"depth":110,"text":3566},{"id":20764,"depth":110,"text":3558},{"id":20783,"depth":113,"text":20784},{"id":20807,"depth":113,"text":20808},{"type":12,"value":46137},[46138,46140,46146],[15,46139,541],{"id":540},[20,46141,20168,46142,20171,46144,20174],{},[546,46143,3566],{},[546,46145,3529],{},[20,46147,20177,46148,20180,46150,20183],{},[546,46149,3558],{},[546,46151,3566],{},[4070,20903,3662,4071,20904],{},{"title":20160,"description":20885},"react-native-vs-dious",{"id":20911,"title":20912,"author":46157,"body":46158,"canonical":115,"categories":115,"date":21111,"description":21112,"excerpt":46292,"extension":118,"img":21125,"keywords":46304,"language":3510,"meta":46305,"navigation":129,"ogImage":115,"path":21133,"rating":275,"readTime":287,"seo":46306,"stem":21135,"tag":3515,"__hash__":21136,"slug":46307},{"name":8,"img":10,"website":535},{"type":12,"value":46159,"toc":46283},[46160,46162,46170,46172,46174,46180,46186,46188,46190,46210,46226,46228,46230,46236,46240,46244,46246,46250,46254,46256,46262,46264,46266,46276,46281],[15,46161,541],{"id":540},[20,46163,20920,46164,20924,46166,20928,46168,2230],{},[546,46165,20923],{},[546,46167,20927],{},[546,46169,11126],{},[15,46171,748],{"id":747},[31,46173,20936],{"id":20935},[20,46175,20939,46176,20943,46178],{},[546,46177,20942],{},[3540,46179,3543],{"index":3542},[24,46181,46182],{"type":631},[20,46183,20950,46184],{},[3540,46185,3570],{"index":1198},[31,46187,20956],{"id":20955},[20,46189,20959],{},[2922,46191,46192,46198,46204],{},[564,46193,46194,20967,46196],{},[546,46195,20966],{},[3540,46197,3582],{"index":1226},[564,46199,46200,20975,46202],{},[546,46201,20974],{},[3540,46203,3630],{"index":1249},[564,46205,46206,20983,46208],{},[546,46207,20982],{},[3540,46209,3638],{"index":1273},[10834,46211,46212,46214],{},[2459,46213,20991],{"id":20990},[561,46215,46216,46218,46220,46222,46224],{},[564,46217,20996],{},[564,46219,20999],{},[564,46221,21002],{},[564,46223,21005],{},[564,46225,21008],{},[20,46227,21011],{},[31,46229,21015],{"id":21014},[20,46231,21018,46232,21022,46234],{},[546,46233,21021],{},[3540,46235,3653],{"index":1297},[161,46237,46238],{"icon":11228,"title":21027},[20,46239,21030],{},[20,46241,21033,46242],{},[3540,46243,21037],{"index":21036},[31,46245,21041],{"id":21040},[20,46247,21044,46248],{},[3540,46249,21048],{"index":21047},[24,46251,46252],{"type":26},[20,46253,21053],{},[31,46255,21057],{"id":21056},[20,46257,21060,46258,21064,46260],{},[546,46259,21063],{},[3540,46261,21068],{"index":21067},[72,46263],{},[15,46265,3352],{"id":3351},[20,46267,21075,46268,21079,46270,7128,46272,21086,46274,21090],{},[3587,46269,21078],{},[546,46271,21082],{},[546,46273,21085],{},[546,46275,21089],{},[20,46277,21093,46278,21098],{},[203,46279,21096],{"href":21096,"rel":46280},[207],[3540,46282,21101],{},{"title":55,"searchDepth":110,"depth":110,"links":46284},[46285,46286,46289,46290,46291],{"id":20935,"depth":113,"text":20936},{"id":20955,"depth":113,"text":20956,"children":46287},[46288],{"id":20990,"depth":110,"text":20991},{"id":21014,"depth":113,"text":21015},{"id":21040,"depth":113,"text":21041},{"id":21056,"depth":113,"text":21057},{"type":12,"value":46293},[46294,46296],[15,46295,541],{"id":540},[20,46297,20920,46298,20924,46300,20928,46302,2230],{},[546,46299,20923],{},[546,46301,20927],{},[546,46303,11126],{},[21127,21128,21129,21130,21131],{},{"title":20912,"description":21112},"solo-level",{"id":21138,"title":21139,"author":46309,"body":46310,"canonical":115,"categories":115,"date":22498,"description":22499,"excerpt":47446,"extension":118,"img":3502,"keywords":47452,"language":3510,"meta":47453,"navigation":129,"ogImage":115,"path":22513,"rating":275,"readTime":293,"seo":47454,"stem":22515,"tag":3515,"__hash__":22516,"slug":47455},{"name":8,"img":10,"website":535},{"type":12,"value":46311,"toc":47430},[46312,46314,46316,46318,46320,46322,46324,46326,46352,46356,46358,46360,46362,46386,46388,46390,46438,46440,46442,46566,46570,46572,46574,46576,46736,46738,46740,46840,46846,46848,46850,46970,46972,46976,46978,47022,47024,47026,47178,47180,47182,47226,47230,47232,47234,47236,47296,47298,47300,47416,47418,47420,47422,47424,47426,47428],[15,46313,541],{"id":540},[20,46315,21147],{},[15,46317,21151],{"id":21150},[20,46319,21154],{},[20,46321,21157],{},[31,46323,21161],{"id":21160},[20,46325,21164],{},[561,46327,46328,46332,46336,46340,46344,46348],{},[564,46329,46330,21172],{},[546,46331,21171],{},[564,46333,46334,21178],{},[546,46335,21177],{},[564,46337,46338,21184],{},[546,46339,21183],{},[564,46341,46342,21190],{},[546,46343,21189],{},[564,46345,46346,21196],{},[546,46347,21195],{},[564,46349,46350,21202],{},[546,46351,21201],{},[24,46353,46354],{"type":631},[20,46355,21207],{},[15,46357,21211],{"id":21210},[20,46359,21214],{},[31,46361,21218],{"id":21217},[47,46363,46364],{"className":758,"code":21221,"filename":760,"language":761,"meta":55,"style":55},[39,46365,46366,46374,46378],{"__ignoreMap":55},[250,46367,46368,46370,46372],{"class":252,"line":253},[250,46369,4226],{"class":774},[250,46371,808],{"class":782},[250,46373,21232],{"class":782},[250,46375,46376],{"class":252,"line":113},[250,46377,21237],{"class":768},[250,46379,46380,46382,46384],{"class":252,"line":110},[250,46381,21242],{"class":774},[250,46383,21245],{"class":782},[250,46385,21232],{"class":782},[31,46387,21251],{"id":21250},[20,46389,21254],{},[47,46391,46392],{"className":20349,"code":21257,"filename":21258,"language":20351,"meta":55,"style":55},[39,46393,46394,46398,46402,46406,46410,46414,46418,46422,46426,46430,46434],{"__ignoreMap":55},[250,46395,46396],{"class":252,"line":253},[250,46397,21265],{},[250,46399,46400],{"class":252,"line":113},[250,46401,795],{"emptyLinePlaceholder":129},[250,46403,46404],{"class":252,"line":110},[250,46405,21274],{},[250,46407,46408],{"class":252,"line":269},[250,46409,795],{"emptyLinePlaceholder":129},[250,46411,46412],{"class":252,"line":275},[250,46413,21283],{},[250,46415,46416],{"class":252,"line":281},[250,46417,21288],{},[250,46419,46420],{"class":252,"line":287},[250,46421,21293],{},[250,46423,46424],{"class":252,"line":293},[250,46425,21298],{},[250,46427,46428],{"class":252,"line":299},[250,46429,21303],{},[250,46431,46432],{"class":252,"line":132},[250,46433,2859],{},[250,46435,46436],{"class":252,"line":310},[250,46437,991],{},[31,46439,21315],{"id":21314},[20,46441,21318],{},[47,46443,46444],{"className":20349,"code":21321,"filename":21322,"language":20351,"meta":55,"style":55},[39,46445,46446,46450,46454,46458,46462,46466,46470,46474,46478,46482,46486,46490,46494,46498,46502,46506,46510,46514,46518,46522,46526,46530,46534,46538,46542,46546,46550,46554,46558,46562],{"__ignoreMap":55},[250,46447,46448],{"class":252,"line":253},[250,46449,21329],{},[250,46451,46452],{"class":252,"line":113},[250,46453,795],{"emptyLinePlaceholder":129},[250,46455,46456],{"class":252,"line":110},[250,46457,21338],{},[250,46459,46460],{"class":252,"line":269},[250,46461,21343],{},[250,46463,46464],{"class":252,"line":275},[250,46465,21348],{},[250,46467,46468],{"class":252,"line":281},[250,46469,21353],{},[250,46471,46472],{"class":252,"line":287},[250,46473,991],{},[250,46475,46476],{"class":252,"line":293},[250,46477,795],{"emptyLinePlaceholder":129},[250,46479,46480],{"class":252,"line":299},[250,46481,21366],{},[250,46483,46484],{"class":252,"line":132},[250,46485,21371],{},[250,46487,46488],{"class":252,"line":310},[250,46489,21376],{},[250,46491,46492],{"class":252,"line":316},[250,46493,21381],{},[250,46495,46496],{"class":252,"line":322},[250,46497,991],{},[250,46499,46500],{"class":252,"line":328},[250,46501,795],{"emptyLinePlaceholder":129},[250,46503,46504],{"class":252,"line":334},[250,46505,21394],{},[250,46507,46508],{"class":252,"line":340},[250,46509,21399],{},[250,46511,46512],{"class":252,"line":346},[250,46513,21404],{},[250,46515,46516],{"class":252,"line":352},[250,46517,21409],{},[250,46519,46520],{"class":252,"line":358},[250,46521,6749],{},[250,46523,46524],{"class":252,"line":364},[250,46525,795],{"emptyLinePlaceholder":129},[250,46527,46528],{"class":252,"line":370},[250,46529,21422],{},[250,46531,46532],{"class":252,"line":376},[250,46533,21427],{},[250,46535,46536],{"class":252,"line":382},[250,46537,795],{"emptyLinePlaceholder":129},[250,46539,46540],{"class":252,"line":388},[250,46541,21288],{},[250,46543,46544],{"class":252,"line":393},[250,46545,21440],{},[250,46547,46548],{"class":252,"line":399},[250,46549,21445],{},[250,46551,46552],{"class":252,"line":405},[250,46553,21450],{},[250,46555,46556],{"class":252,"line":410},[250,46557,21455],{},[250,46559,46560],{"class":252,"line":415},[250,46561,2859],{},[250,46563,46564],{"class":252,"line":420},[250,46565,991],{},[161,46567,46568],{"icon":5036,"title":21466},[20,46569,21469],{},[15,46571,21473],{"id":21472},[31,46573,21477],{"id":21476},[20,46575,21480],{},[47,46577,46578],{"className":20349,"code":21483,"filename":21484,"language":20351,"meta":55,"style":55},[39,46579,46580,46584,46588,46592,46596,46600,46604,46608,46612,46616,46620,46624,46628,46632,46636,46640,46644,46648,46652,46656,46660,46664,46668,46672,46676,46680,46684,46688,46692,46696,46700,46704,46708,46712,46716,46720,46724,46728,46732],{"__ignoreMap":55},[250,46581,46582],{"class":252,"line":253},[250,46583,21491],{},[250,46585,46586],{"class":252,"line":113},[250,46587,795],{"emptyLinePlaceholder":129},[250,46589,46590],{"class":252,"line":110},[250,46591,21500],{},[250,46593,46594],{"class":252,"line":269},[250,46595,21348],{},[250,46597,46598],{"class":252,"line":275},[250,46599,21353],{},[250,46601,46602],{"class":252,"line":281},[250,46603,991],{},[250,46605,46606],{"class":252,"line":287},[250,46607,795],{"emptyLinePlaceholder":129},[250,46609,46610],{"class":252,"line":293},[250,46611,21521],{},[250,46613,46614],{"class":252,"line":299},[250,46615,21526],{},[250,46617,46618],{"class":252,"line":132},[250,46619,795],{"emptyLinePlaceholder":129},[250,46621,46622],{"class":252,"line":310},[250,46623,21535],{},[250,46625,46626],{"class":252,"line":316},[250,46627,21540],{},[250,46629,46630],{"class":252,"line":322},[250,46631,21545],{},[250,46633,46634],{"class":252,"line":328},[250,46635,21550],{},[250,46637,46638],{"class":252,"line":334},[250,46639,21555],{},[250,46641,46642],{"class":252,"line":340},[250,46643,21560],{},[250,46645,46646],{"class":252,"line":346},[250,46647,21565],{},[250,46649,46650],{"class":252,"line":352},[250,46651,21570],{},[250,46653,46654],{"class":252,"line":358},[250,46655,21575],{},[250,46657,46658],{"class":252,"line":364},[250,46659,21580],{},[250,46661,46662],{"class":252,"line":370},[250,46663,14039],{},[250,46665,46666],{"class":252,"line":376},[250,46667,6749],{},[250,46669,46670],{"class":252,"line":382},[250,46671,795],{"emptyLinePlaceholder":129},[250,46673,46674],{"class":252,"line":388},[250,46675,21597],{},[250,46677,46678],{"class":252,"line":393},[250,46679,21602],{},[250,46681,46682],{"class":252,"line":399},[250,46683,1161],{},[250,46685,46686],{"class":252,"line":405},[250,46687,795],{"emptyLinePlaceholder":129},[250,46689,46690],{"class":252,"line":410},[250,46691,21288],{},[250,46693,46694],{"class":252,"line":415},[250,46695,21619],{},[250,46697,46698],{"class":252,"line":420},[250,46699,21624],{},[250,46701,46702],{"class":252,"line":426},[250,46703,21629],{},[250,46705,46706],{"class":252,"line":431},[250,46707,21634],{},[250,46709,46710],{"class":252,"line":436},[250,46711,21639],{},[250,46713,46714],{"class":252,"line":442},[250,46715,21644],{},[250,46717,46718],{"class":252,"line":447},[250,46719,21649],{},[250,46721,46722],{"class":252,"line":453},[250,46723,21654],{},[250,46725,46726],{"class":252,"line":459},[250,46727,21659],{},[250,46729,46730],{"class":252,"line":465},[250,46731,2859],{},[250,46733,46734],{"class":252,"line":471},[250,46735,991],{},[31,46737,21671],{"id":21670},[20,46739,21674],{},[47,46741,46742],{"className":20349,"code":21677,"filename":21678,"language":20351,"meta":55,"style":55},[39,46743,46744,46748,46752,46756,46760,46764,46768,46772,46776,46780,46784,46788,46792,46796,46800,46804,46808,46812,46816,46820,46824,46828,46832,46836],{"__ignoreMap":55},[250,46745,46746],{"class":252,"line":253},[250,46747,21685],{},[250,46749,46750],{"class":252,"line":113},[250,46751,21690],{},[250,46753,46754],{"class":252,"line":110},[250,46755,21695],{},[250,46757,46758],{"class":252,"line":269},[250,46759,21700],{},[250,46761,46762],{"class":252,"line":275},[250,46763,21705],{},[250,46765,46766],{"class":252,"line":281},[250,46767,795],{"emptyLinePlaceholder":129},[250,46769,46770],{"class":252,"line":287},[250,46771,21714],{},[250,46773,46774],{"class":252,"line":293},[250,46775,21719],{},[250,46777,46778],{"class":252,"line":299},[250,46779,795],{"emptyLinePlaceholder":129},[250,46781,46782],{"class":252,"line":132},[250,46783,21728],{},[250,46785,46786],{"class":252,"line":310},[250,46787,21733],{},[250,46789,46790],{"class":252,"line":316},[250,46791,795],{"emptyLinePlaceholder":129},[250,46793,46794],{"class":252,"line":322},[250,46795,21742],{},[250,46797,46798],{"class":252,"line":328},[250,46799,21747],{},[250,46801,46802],{"class":252,"line":334},[250,46803,1048],{},[250,46805,46806],{"class":252,"line":340},[250,46807,21756],{},[250,46809,46810],{"class":252,"line":346},[250,46811,21761],{},[250,46813,46814],{"class":252,"line":352},[250,46815,21766],{},[250,46817,46818],{"class":252,"line":358},[250,46819,1048],{},[250,46821,46822],{"class":252,"line":364},[250,46823,21775],{},[250,46825,46826],{"class":252,"line":370},[250,46827,21780],{},[250,46829,46830],{"class":252,"line":376},[250,46831,21785],{},[250,46833,46834],{"class":252,"line":382},[250,46835,1048],{},[250,46837,46838],{"class":252,"line":388},[250,46839,1077],{},[10834,46841,46842,46844],{},[2459,46843,21799],{"id":21798},[20,46845,21802],{},[31,46847,21806],{"id":21805},[20,46849,21809],{},[47,46851,46852],{"className":20349,"code":21812,"filename":21813,"language":20351,"meta":55,"style":55},[39,46853,46854,46858,46862,46866,46870,46874,46878,46882,46886,46890,46894,46898,46902,46906,46910,46914,46918,46922,46926,46930,46934,46938,46942,46946,46950,46954,46958,46962,46966],{"__ignoreMap":55},[250,46855,46856],{"class":252,"line":253},[250,46857,21820],{},[250,46859,46860],{"class":252,"line":113},[250,46861,21825],{},[250,46863,46864],{"class":252,"line":110},[250,46865,795],{"emptyLinePlaceholder":129},[250,46867,46868],{"class":252,"line":269},[250,46869,21834],{},[250,46871,46872],{"class":252,"line":275},[250,46873,21839],{},[250,46875,46876],{"class":252,"line":281},[250,46877,21844],{},[250,46879,46880],{"class":252,"line":287},[250,46881,21849],{},[250,46883,46884],{"class":252,"line":293},[250,46885,6749],{},[250,46887,46888],{"class":252,"line":299},[250,46889,795],{"emptyLinePlaceholder":129},[250,46891,46892],{"class":252,"line":132},[250,46893,21288],{},[250,46895,46896],{"class":252,"line":310},[250,46897,21440],{},[250,46899,46900],{"class":252,"line":316},[250,46901,21870],{},[250,46903,46904],{"class":252,"line":322},[250,46905,17061],{},[250,46907,46908],{"class":252,"line":328},[250,46909,21879],{},[250,46911,46912],{"class":252,"line":334},[250,46913,21884],{},[250,46915,46916],{"class":252,"line":340},[250,46917,21889],{},[250,46919,46920],{"class":252,"line":346},[250,46921,21894],{},[250,46923,46924],{"class":252,"line":352},[250,46925,21899],{},[250,46927,46928],{"class":252,"line":358},[250,46929,21904],{},[250,46931,46932],{"class":252,"line":364},[250,46933,17061],{},[250,46935,46936],{"class":252,"line":370},[250,46937,21879],{},[250,46939,46940],{"class":252,"line":376},[250,46941,21917],{},[250,46943,46944],{"class":252,"line":382},[250,46945,21922],{},[250,46947,46948],{"class":252,"line":388},[250,46949,21894],{},[250,46951,46952],{"class":252,"line":393},[250,46953,21931],{},[250,46955,46956],{"class":252,"line":399},[250,46957,21904],{},[250,46959,46960],{"class":252,"line":405},[250,46961,21455],{},[250,46963,46964],{"class":252,"line":410},[250,46965,2859],{},[250,46967,46968],{"class":252,"line":415},[250,46969,991],{},[15,46971,12925],{"id":12924},[24,46973,46974],{"type":26},[20,46975,21954],{},[31,46977,21958],{"id":21957},[47,46979,46980],{"className":20349,"code":21961,"filename":21962,"language":20351,"meta":55,"style":55},[39,46981,46982,46986,46990,46994,46998,47002,47006,47010,47014,47018],{"__ignoreMap":55},[250,46983,46984],{"class":252,"line":253},[250,46985,21969],{},[250,46987,46988],{"class":252,"line":113},[250,46989,21974],{},[250,46991,46992],{"class":252,"line":110},[250,46993,21979],{},[250,46995,46996],{"class":252,"line":269},[250,46997,21984],{},[250,46999,47000],{"class":252,"line":275},[250,47001,21989],{},[250,47003,47004],{"class":252,"line":281},[250,47005,21994],{},[250,47007,47008],{"class":252,"line":287},[250,47009,21999],{},[250,47011,47012],{"class":252,"line":293},[250,47013,14039],{},[250,47015,47016],{"class":252,"line":299},[250,47017,1048],{},[250,47019,47020],{"class":252,"line":132},[250,47021,1077],{},[31,47023,22015],{"id":22014},[20,47025,22018],{},[47,47027,47028],{"className":1010,"code":22021,"filename":22022,"language":1012,"meta":55,"style":55},[39,47029,47030,47042,47046,47060,47088,47120,47124,47128,47142,47170,47174],{"__ignoreMap":55},[250,47031,47032,47034,47036,47038,47040],{"class":252,"line":253},[250,47033,1019],{"class":786},[250,47035,4438],{"class":786},[250,47037,22033],{"class":778},[250,47039,1187],{"class":786},[250,47041,1118],{"class":912},[250,47043,47044],{"class":252,"line":113},[250,47045,22042],{"class":912},[250,47047,47048,47050,47052,47054,47056,47058],{"class":252,"line":110},[250,47049,22047],{"class":912},[250,47051,13154],{"class":782},[250,47053,22052],{"class":912},[250,47055,1472],{"class":786},[250,47057,4438],{"class":786},[250,47059,927],{"class":912},[250,47061,47062,47064,47066,47068,47070,47072,47074,47076,47078,47080,47082,47084,47086],{"class":252,"line":269},[250,47063,22063],{"class":774},[250,47065,22066],{"class":912},[250,47067,9727],{"class":1370},[250,47069,1007],{"class":786},[250,47071,2506],{"class":778},[250,47073,1446],{"class":912},[250,47075,1115],{"class":786},[250,47077,7123],{"class":912},[250,47079,13154],{"class":782},[250,47081,22083],{"class":912},[250,47083,1472],{"class":786},[250,47085,4438],{"class":786},[250,47087,927],{"class":912},[250,47089,47090,47092,47094,47096,47098,47100,47102,47104,47106,47108,47110,47112,47114,47116,47118],{"class":252,"line":275},[250,47091,22094],{"class":774},[250,47093,22066],{"class":912},[250,47095,9727],{"class":1370},[250,47097,1007],{"class":786},[250,47099,2506],{"class":778},[250,47101,1446],{"class":912},[250,47103,1115],{"class":786},[250,47105,7123],{"class":912},[250,47107,13154],{"class":782},[250,47109,22113],{"class":912},[250,47111,22116],{"class":782},[250,47113,22052],{"class":912},[250,47115,1472],{"class":786},[250,47117,4438],{"class":786},[250,47119,927],{"class":912},[250,47121,47122],{"class":252,"line":281},[250,47123,1048],{"class":912},[250,47125,47126],{"class":252,"line":287},[250,47127,22133],{"class":912},[250,47129,47130,47132,47134,47136,47138,47140],{"class":252,"line":293},[250,47131,22047],{"class":912},[250,47133,22116],{"class":782},[250,47135,22052],{"class":912},[250,47137,1472],{"class":786},[250,47139,4438],{"class":786},[250,47141,927],{"class":912},[250,47143,47144,47146,47148,47150,47152,47154,47156,47158,47160,47162,47164,47166,47168],{"class":252,"line":299},[250,47145,22063],{"class":774},[250,47147,22066],{"class":912},[250,47149,9727],{"class":1370},[250,47151,1007],{"class":786},[250,47153,2506],{"class":778},[250,47155,1446],{"class":912},[250,47157,1115],{"class":786},[250,47159,7123],{"class":912},[250,47161,22116],{"class":782},[250,47163,22083],{"class":912},[250,47165,1472],{"class":786},[250,47167,4438],{"class":786},[250,47169,927],{"class":912},[250,47171,47172],{"class":252,"line":132},[250,47173,1048],{"class":912},[250,47175,47176],{"class":252,"line":310},[250,47177,10945],{"class":912},[31,47179,22187],{"id":22186},[20,47181,22190],{},[47,47183,47184],{"className":20349,"code":22193,"filename":21258,"language":20351,"meta":55,"style":55},[39,47185,47186,47190,47194,47198,47202,47206,47210,47214,47218,47222],{"__ignoreMap":55},[250,47187,47188],{"class":252,"line":253},[250,47189,22200],{},[250,47191,47192],{"class":252,"line":113},[250,47193,795],{"emptyLinePlaceholder":129},[250,47195,47196],{"class":252,"line":110},[250,47197,21283],{},[250,47199,47200],{"class":252,"line":269},[250,47201,21288],{},[250,47203,47204],{"class":252,"line":275},[250,47205,21293],{},[250,47207,47208],{"class":252,"line":281},[250,47209,21298],{},[250,47211,47212],{"class":252,"line":287},[250,47213,22225],{},[250,47215,47216],{"class":252,"line":293},[250,47217,21303],{},[250,47219,47220],{"class":252,"line":299},[250,47221,2859],{},[250,47223,47224],{"class":252,"line":132},[250,47225,991],{},[161,47227,47228],{"icon":7846,"title":22240},[20,47229,22243],{},[15,47231,22247],{"id":22246},[31,47233,22251],{"id":22250},[20,47235,22254],{},[47,47237,47238],{"className":20349,"code":22257,"filename":22258,"language":20351,"meta":55,"style":55},[39,47239,47240,47244,47248,47252,47256,47260,47264,47268,47272,47276,47280,47284,47288,47292],{"__ignoreMap":55},[250,47241,47242],{"class":252,"line":253},[250,47243,22265],{},[250,47245,47246],{"class":252,"line":113},[250,47247,22270],{},[250,47249,47250],{"class":252,"line":110},[250,47251,21404],{},[250,47253,47254],{"class":252,"line":269},[250,47255,21409],{},[250,47257,47258],{"class":252,"line":275},[250,47259,6749],{},[250,47261,47262],{"class":252,"line":281},[250,47263,795],{"emptyLinePlaceholder":129},[250,47265,47266],{"class":252,"line":287},[250,47267,22291],{},[250,47269,47270],{"class":252,"line":293},[250,47271,22296],{},[250,47273,47274],{"class":252,"line":299},[250,47275,22301],{},[250,47277,47278],{"class":252,"line":132},[250,47279,22306],{},[250,47281,47282],{"class":252,"line":310},[250,47283,6749],{},[250,47285,47286],{"class":252,"line":316},[250,47287,795],{"emptyLinePlaceholder":129},[250,47289,47290],{"class":252,"line":322},[250,47291,22319],{},[250,47293,47294],{"class":252,"line":328},[250,47295,991],{},[31,47297,21201],{"id":22326},[20,47299,22329],{},[47,47301,47302],{"className":20349,"code":22332,"filename":22333,"language":20351,"meta":55,"style":55},[39,47303,47304,47308,47312,47316,47320,47324,47328,47332,47336,47340,47344,47348,47352,47356,47360,47364,47368,47372,47376,47380,47384,47388,47392,47396,47400,47404,47408,47412],{"__ignoreMap":55},[250,47305,47306],{"class":252,"line":253},[250,47307,22340],{},[250,47309,47310],{"class":252,"line":113},[250,47311,21526],{},[250,47313,47314],{"class":252,"line":110},[250,47315,795],{"emptyLinePlaceholder":129},[250,47317,47318],{"class":252,"line":269},[250,47319,22291],{},[250,47321,47322],{"class":252,"line":275},[250,47323,22357],{},[250,47325,47326],{"class":252,"line":281},[250,47327,22362],{},[250,47329,47330],{"class":252,"line":287},[250,47331,6749],{},[250,47333,47334],{"class":252,"line":293},[250,47335,795],{"emptyLinePlaceholder":129},[250,47337,47338],{"class":252,"line":299},[250,47339,22375],{},[250,47341,47342],{"class":252,"line":132},[250,47343,22380],{},[250,47345,47346],{"class":252,"line":310},[250,47347,22385],{},[250,47349,47350],{"class":252,"line":316},[250,47351,22390],{},[250,47353,47354],{"class":252,"line":322},[250,47355,1547],{},[250,47357,47358],{"class":252,"line":328},[250,47359,1161],{},[250,47361,47362],{"class":252,"line":334},[250,47363,795],{"emptyLinePlaceholder":129},[250,47365,47366],{"class":252,"line":340},[250,47367,21288],{},[250,47369,47370],{"class":252,"line":346},[250,47371,21440],{},[250,47373,47374],{"class":252,"line":352},[250,47375,22415],{},[250,47377,47378],{"class":252,"line":358},[250,47379,22420],{},[250,47381,47382],{"class":252,"line":364},[250,47383,22425],{},[250,47385,47386],{"class":252,"line":370},[250,47387,22430],{},[250,47389,47390],{"class":252,"line":376},[250,47391,22435],{},[250,47393,47394],{"class":252,"line":382},[250,47395,22440],{},[250,47397,47398],{"class":252,"line":388},[250,47399,22445],{},[250,47401,47402],{"class":252,"line":393},[250,47403,22450],{},[250,47405,47406],{"class":252,"line":399},[250,47407,21455],{},[250,47409,47410],{"class":252,"line":405},[250,47411,2859],{},[250,47413,47414],{"class":252,"line":410},[250,47415,991],{},[72,47417],{},[15,47419,3352],{"id":3351},[20,47421,22469],{},[20,47423,22472],{},[20,47425,22475],{},[20,47427,22478],{},[500,47429,22481],{},{"title":55,"searchDepth":110,"depth":110,"links":47431},[47432,47433,47434,47435,47436,47437,47440,47441,47442,47443,47444,47445],{"id":21160,"depth":113,"text":21161},{"id":21217,"depth":113,"text":21218},{"id":21250,"depth":113,"text":21251},{"id":21314,"depth":113,"text":21315},{"id":21476,"depth":113,"text":21477},{"id":21670,"depth":113,"text":21671,"children":47438},[47439],{"id":21798,"depth":110,"text":21799},{"id":21805,"depth":113,"text":21806},{"id":21957,"depth":113,"text":21958},{"id":22014,"depth":113,"text":22015},{"id":22186,"depth":113,"text":22187},{"id":22250,"depth":113,"text":22251},{"id":22326,"depth":113,"text":21201},{"type":12,"value":47447},[47448,47450],[15,47449,541],{"id":540},[20,47451,21147],{},[22507,22508,22509,22510,22511,8234],{},{"title":21139,"description":22499},"tanstack-query",{"id":22518,"title":22519,"author":47457,"body":47458,"canonical":115,"categories":115,"date":12959,"description":23302,"excerpt":48088,"extension":118,"img":23323,"keywords":48108,"language":3510,"meta":48109,"navigation":129,"ogImage":115,"path":23327,"rating":275,"readTime":132,"seo":48110,"stem":23329,"tag":3515,"__hash__":23330,"slug":48111},{"name":8,"img":10,"website":535},{"type":12,"value":47459,"toc":48071},[47460,47462,47464,47468,47474,47478,47480,47482,47484,47494,47496,47502,47506,47508,47510,47512,47526,47528,47538,47540,47542,47544,47546,47616,47618,47620,47622,47698,47700,47702,47704,47788,47790,47802,47804,47806,47808,47940,47942,47950,47952,47954,47956,47958,47986,47988,47996,47998,48000,48002,48007,48009,48017,48019,48021,48023,48033,48035,48037,48039,48041,48051,48053,48061,48063,48065,48067,48069],[15,47461,541],{"id":540},[20,47463,22527],{},[20,47465,47466,22533],{},[546,47467,22532],{},[20,47469,22536,47470,22540,47472,22544],{},[546,47471,22539],{},[3587,47473,22543],{},[20,47475,22547,47476,22551],{},[546,47477,22550],{},[15,47479,748],{"id":747},[31,47481,22557],{"id":22556},[20,47483,22560],{},[561,47485,47486,47488,47490,47492],{},[564,47487,22565],{},[564,47489,22568],{},[564,47491,22571],{},[564,47493,22574],{},[20,47495,22577],{},[24,47497,47498],{"type":631},[20,47499,22582,47500,22586],{},[3587,47501,22585],{},[20,47503,22589,47504,22593],{},[546,47505,22592],{},[72,47507],{},[31,47509,22599],{"id":22598},[20,47511,22602],{},[2922,47513,47514,47518,47522],{},[564,47515,47516],{},[546,47517,22609],{},[564,47519,47520],{},[546,47521,22614],{},[564,47523,47524],{},[546,47525,22619],{},[20,47527,22622],{},[561,47529,47530,47532,47534,47536],{},[564,47531,22627],{},[564,47533,22630],{},[564,47535,22633],{},[564,47537,22636],{},[20,47539,22639],{},[72,47541],{},[31,47543,21251],{"id":21250},[20,47545,22646],{},[47,47547,47548],{"className":1010,"code":22649,"filename":22650,"language":1012,"meta":55,"style":55},[39,47549,47550,47560,47564,47576,47590,47594,47598,47608,47612],{"__ignoreMap":55},[250,47551,47552,47554,47556,47558],{"class":252,"line":253},[250,47553,1763],{"class":786},[250,47555,22659],{"class":912},[250,47557,1769],{"class":786},[250,47559,22664],{"class":782},[250,47561,47562],{"class":252,"line":113},[250,47563,795],{"emptyLinePlaceholder":129},[250,47565,47566,47568,47570,47572,47574],{"class":252,"line":110},[250,47567,1181],{"class":786},[250,47569,22675],{"class":778},[250,47571,1187],{"class":786},[250,47573,22680],{"class":774},[250,47575,1028],{"class":912},[250,47577,47578,47580,47582,47584,47586,47588],{"class":252,"line":269},[250,47579,22687],{"class":774},[250,47581,22690],{"class":912},[250,47583,1115],{"class":786},[250,47585,22695],{"class":912},[250,47587,22698],{"class":774},[250,47589,17047],{"class":912},[250,47591,47592],{"class":252,"line":275},[250,47593,474],{"class":912},[250,47595,47596],{"class":252,"line":281},[250,47597,795],{"emptyLinePlaceholder":129},[250,47599,47600,47602,47604,47606],{"class":252,"line":287},[250,47601,22713],{"class":912},[250,47603,1416],{"class":786},[250,47605,22718],{"class":774},[250,47607,1028],{"class":912},[250,47609,47610],{"class":252,"line":293},[250,47611,22725],{"class":912},[250,47613,47614],{"class":252,"line":299},[250,47615,474],{"class":912},[20,47617,22732],{},[31,47619,22736],{"id":22735},[20,47621,22739],{},[47,47623,47624],{"className":1010,"code":22742,"language":1012,"meta":55,"style":55},[39,47625,47626,47636,47640,47658,47662,47666,47670,47678,47694],{"__ignoreMap":55},[250,47627,47628,47630,47632,47634],{"class":252,"line":253},[250,47629,1763],{"class":786},[250,47631,22751],{"class":912},[250,47633,1769],{"class":786},[250,47635,22664],{"class":782},[250,47637,47638],{"class":252,"line":113},[250,47639,795],{"emptyLinePlaceholder":129},[250,47641,47642,47644,47646,47648,47650,47652,47654,47656],{"class":252,"line":110},[250,47643,1019],{"class":786},[250,47645,4438],{"class":786},[250,47647,22768],{"class":778},[250,47649,1187],{"class":786},[250,47651,22773],{"class":774},[250,47653,1434],{"class":912},[250,47655,22778],{"class":782},[250,47657,22781],{"class":912},[250,47659,47660],{"class":252,"line":269},[250,47661,22786],{"class":912},[250,47663,47664],{"class":252,"line":275},[250,47665,474],{"class":912},[250,47667,47668],{"class":252,"line":281},[250,47669,795],{"emptyLinePlaceholder":129},[250,47671,47672,47674,47676],{"class":252,"line":287},[250,47673,22799],{"class":786},[250,47675,22802],{"class":774},[250,47677,1851],{"class":912},[250,47679,47680,47682,47684,47686,47688,47690,47692],{"class":252,"line":293},[250,47681,1123],{"class":786},[250,47683,22695],{"class":912},[250,47685,15],{"class":774},[250,47687,22815],{"class":912},[250,47689,13209],{"class":786},[250,47691,15],{"class":912},[250,47693,13111],{"class":786},[250,47695,47696],{"class":252,"line":299},[250,47697,991],{"class":912},[20,47699,22828],{},[31,47701,22832],{"id":22831},[20,47703,22835],{},[47,47705,47706],{"className":1010,"code":22838,"language":1012,"meta":55,"style":55},[39,47707,47708,47726,47730,47734,47738,47746,47764,47784],{"__ignoreMap":55},[250,47709,47710,47712,47714,47716,47718,47720,47722,47724],{"class":252,"line":253},[250,47711,1019],{"class":786},[250,47713,4438],{"class":786},[250,47715,22768],{"class":778},[250,47717,1187],{"class":786},[250,47719,22773],{"class":774},[250,47721,1434],{"class":912},[250,47723,22857],{"class":782},[250,47725,22781],{"class":912},[250,47727,47728],{"class":252,"line":113},[250,47729,22864],{"class":912},[250,47731,47732],{"class":252,"line":110},[250,47733,474],{"class":912},[250,47735,47736],{"class":252,"line":269},[250,47737,795],{"emptyLinePlaceholder":129},[250,47739,47740,47742,47744],{"class":252,"line":275},[250,47741,22799],{"class":786},[250,47743,22879],{"class":774},[250,47745,1851],{"class":912},[250,47747,47748,47750,47752,47754,47756,47758,47760,47762],{"class":252,"line":281},[250,47749,1455],{"class":786},[250,47751,7768],{"class":912},[250,47753,14401],{"class":778},[250,47755,11640],{"class":912},[250,47757,1416],{"class":786},[250,47759,22896],{"class":912},[250,47761,22899],{"class":774},[250,47763,4861],{"class":912},[250,47765,47766,47768,47770,47772,47774,47776,47778,47780,47782],{"class":252,"line":287},[250,47767,1123],{"class":786},[250,47769,22695],{"class":912},[250,47771,16946],{"class":774},[250,47773,22912],{"class":912},[250,47775,22915],{"class":778},[250,47777,22918],{"class":912},[250,47779,13209],{"class":786},[250,47781,16946],{"class":912},[250,47783,13111],{"class":786},[250,47785,47786],{"class":252,"line":293},[250,47787,991],{"class":912},[2459,47789,22932],{"id":22931},[561,47791,47792,47796,47798,47800],{},[564,47793,47794,22939],{},[39,47795,14401],{},[564,47797,22942],{},[564,47799,22945],{},[564,47801,22948],{},[20,47803,22951],{},[31,47805,22955],{"id":22954},[20,47807,22958],{},[47,47809,47810],{"className":1010,"code":22961,"language":1012,"meta":55,"style":55},[39,47811,47812,47830,47848,47882,47886,47890,47894,47898,47906,47920,47936],{"__ignoreMap":55},[250,47813,47814,47816,47818,47820,47822,47824,47826,47828],{"class":252,"line":253},[250,47815,1019],{"class":786},[250,47817,4438],{"class":786},[250,47819,22768],{"class":778},[250,47821,1187],{"class":786},[250,47823,22773],{"class":774},[250,47825,1434],{"class":912},[250,47827,22857],{"class":782},[250,47829,22781],{"class":912},[250,47831,47832,47834,47836,47838,47840,47842,47844,47846],{"class":252,"line":113},[250,47833,22986],{"class":774},[250,47835,921],{"class":912},[250,47837,1437],{"class":786},[250,47839,22993],{"class":912},[250,47841,22996],{"class":1370},[250,47843,12305],{"class":912},[250,47845,1115],{"class":786},[250,47847,1118],{"class":912},[250,47849,47850,47852,47854,47856,47858,47860,47862,47864,47866,47868,47870,47872,47874,47876,47878,47880],{"class":252,"line":110},[250,47851,14581],{"class":786},[250,47853,2077],{"class":774},[250,47855,1434],{"class":912},[250,47857,23013],{"class":782},[250,47859,22996],{"class":912},[250,47861,2230],{"class":782},[250,47863,14401],{"class":912},[250,47865,2355],{"class":782},[250,47867,2380],{"class":912},[250,47869,2837],{"class":774},[250,47871,1434],{"class":912},[250,47873,23030],{"class":1370},[250,47875,23033],{"class":786},[250,47877,23036],{"class":912},[250,47879,905],{"class":774},[250,47881,23041],{"class":912},[250,47883,47884],{"class":252,"line":269},[250,47885,1048],{"class":912},[250,47887,47888],{"class":252,"line":275},[250,47889,22864],{"class":912},[250,47891,47892],{"class":252,"line":281},[250,47893,474],{"class":912},[250,47895,47896],{"class":252,"line":287},[250,47897,795],{"emptyLinePlaceholder":129},[250,47899,47900,47902,47904],{"class":252,"line":293},[250,47901,22799],{"class":786},[250,47903,22879],{"class":774},[250,47905,1851],{"class":912},[250,47907,47908,47910,47912,47914,47916,47918],{"class":252,"line":299},[250,47909,1455],{"class":786},[250,47911,14943],{"class":778},[250,47913,1187],{"class":786},[250,47915,22896],{"class":912},[250,47917,23078],{"class":774},[250,47919,4861],{"class":912},[250,47921,47922,47924,47926,47928,47930,47932,47934],{"class":252,"line":132},[250,47923,1123],{"class":786},[250,47925,22695],{"class":912},[250,47927,16946],{"class":774},[250,47929,23091],{"class":912},[250,47931,13209],{"class":786},[250,47933,16946],{"class":912},[250,47935,13111],{"class":786},[250,47937,47938],{"class":252,"line":310},[250,47939,991],{"class":912},[2459,47941,12902],{"id":12901},[561,47943,47944,47946,47948],{},[564,47945,23108],{},[564,47947,23111],{},[564,47949,23114],{},[31,47951,23118],{"id":23117},[20,47953,23121],{},[31,47955,23125],{"id":23124},[20,47957,23128],{},[47,47959,47960],{"className":20349,"code":23131,"language":20351,"meta":55,"style":55},[39,47961,47962,47966,47970,47974,47978,47982],{"__ignoreMap":55},[250,47963,47964],{"class":252,"line":253},[250,47965,23138],{},[250,47967,47968],{"class":252,"line":113},[250,47969,23143],{},[250,47971,47972],{"class":252,"line":110},[250,47973,23148],{},[250,47975,47976],{"class":252,"line":269},[250,47977,13111],{},[250,47979,47980],{"class":252,"line":275},[250,47981,23157],{},[250,47983,47984],{"class":252,"line":281},[250,47985,23162],{},[20,47987,23165],{},[561,47989,47990,47992,47994],{},[564,47991,23170],{},[564,47993,23173],{},[564,47995,23176],{},[20,47997,23179],{},[31,47999,23183],{"id":23182},[20,48001,23186],{},[47,48003,48005],{"className":48004,"code":23190,"language":52},[50],[39,48006,23190],{"__ignoreMap":55},[20,48008,23195],{},[561,48010,48011,48013,48015],{},[564,48012,23200],{},[564,48014,23203],{},[564,48016,23206],{},[20,48018,23209],{},[31,48020,23213],{"id":23212},[20,48022,23216],{},[561,48024,48025,48027,48029,48031],{},[564,48026,23221],{},[564,48028,11130],{},[564,48030,23226],{},[564,48032,23229],{},[20,48034,23232],{},[20,48036,23235],{},[31,48038,23239],{"id":23238},[20,48040,23242],{},[561,48042,48043,48045,48047,48049],{},[564,48044,23247],{},[564,48046,23250],{},[564,48048,23253],{},[564,48050,23256],{},[20,48052,23259],{},[561,48054,48055,48057,48059],{},[564,48056,23264],{},[564,48058,23267],{},[564,48060,23270],{},[15,48062,3352],{"id":3351},[20,48064,23275],{},[20,48066,23278],{},[20,48068,23281],{},[500,48070,23284],{},{"title":55,"searchDepth":110,"depth":110,"links":48072},[48073,48074,48075,48076,48077,48080,48083,48084,48085,48086,48087],{"id":22556,"depth":113,"text":22557},{"id":22598,"depth":113,"text":22599},{"id":21250,"depth":113,"text":21251},{"id":22735,"depth":113,"text":22736},{"id":22831,"depth":113,"text":22832,"children":48078},[48079],{"id":22931,"depth":110,"text":22932},{"id":22954,"depth":113,"text":22955,"children":48081},[48082],{"id":12901,"depth":110,"text":12902},{"id":23117,"depth":113,"text":23118},{"id":23124,"depth":113,"text":23125},{"id":23182,"depth":113,"text":23183},{"id":23212,"depth":113,"text":23213},{"id":23238,"depth":113,"text":23239},{"type":12,"value":48089},[48090,48092,48094,48098,48104],[15,48091,541],{"id":540},[20,48093,22527],{},[20,48095,48096,22533],{},[546,48097,22532],{},[20,48099,22536,48100,22540,48102,22544],{},[546,48101,22539],{},[3587,48103,22543],{},[20,48105,22547,48106,22551],{},[546,48107,22550],{},[11332,23325,8234,22511,10986],{},{"title":22519,"description":23302},"tanstack-router",{"id":23332,"title":23333,"author":48113,"body":48114,"canonical":115,"categories":115,"date":24446,"description":24447,"excerpt":49032,"extension":118,"img":12028,"keywords":49048,"language":3510,"meta":49049,"navigation":129,"ogImage":115,"path":24467,"rating":275,"readTime":132,"seo":49050,"stem":24469,"tag":3515,"__hash__":24470,"slug":49051},{"name":8,"img":10,"website":535},{"type":12,"value":48115,"toc":49019},[48116,48118,48126,48130,48132,48138,48140,48142,48144,48148,48154,48156,48232,48237,48239,48243,48250,48300,48305,48307,48311,48317,48363,48368,48370,48374,48380,48382,48474,48479,48481,48485,48491,48551,48556,48558,48562,48564,48608,48613,48615,48621,48639,48705,48709,48711,48713,48715,48757,48759,48761,48763,48765,48993,49000,49002,49004,49013,49017],[15,48117,541],{"id":540},[20,48119,23341,48120,23345,48122,23349,48124],{},[546,48121,23344],{},[546,48123,23348],{},[3540,48125,3543],{"index":3542},[20,48127,23354,48128,23358],{},[546,48129,23357],{},[15,48131,748],{"id":747},[24,48133,48134],{"type":631},[20,48135,23365,48136],{},[3540,48137,3570],{"index":1198},[72,48139],{},[31,48141,23373],{"id":23372},[20,48143,23376],{},[2459,48145,48146,23382],{"id":23379},[546,48147,555],{},[20,48149,48150,23387,48152,23391],{},[39,48151,3504],{},[546,48153,23390],{},[20,48155,23394],{},[47,48157,48158],{"className":23397,"code":23398,"language":23399,"meta":55,"style":55},[39,48159,48160,48164,48176,48180,48190,48194,48198,48206,48220,48224,48228],{"__ignoreMap":55},[250,48161,48162],{"class":252,"line":253},[250,48163,23406],{"class":768},[250,48165,48166,48168,48170,48172,48174],{"class":252,"line":113},[250,48167,1763],{"class":786},[250,48169,23413],{"class":912},[250,48171,1769],{"class":786},[250,48173,23418],{"class":782},[250,48175,1379],{"class":912},[250,48177,48178],{"class":252,"line":110},[250,48179,795],{"emptyLinePlaceholder":129},[250,48181,48182,48184,48186,48188],{"class":252,"line":269},[250,48183,1019],{"class":786},[250,48185,1022],{"class":786},[250,48187,23433],{"class":774},[250,48189,1028],{"class":912},[250,48191,48192],{"class":252,"line":275},[250,48193,23440],{"class":912},[250,48195,48196],{"class":252,"line":281},[250,48197,23445],{"class":912},[250,48199,48200,48202,48204],{"class":252,"line":287},[250,48201,23450],{"class":912},[250,48203,23453],{"class":782},[250,48205,927],{"class":912},[250,48207,48208,48210,48212,48214,48216,48218],{"class":252,"line":293},[250,48209,23460],{"class":774},[250,48211,22690],{"class":912},[250,48213,1115],{"class":786},[250,48215,23467],{"class":912},[250,48217,11562],{"class":782},[250,48219,4599],{"class":912},[250,48221,48222],{"class":252,"line":299},[250,48223,3684],{"class":912},[250,48225,48226],{"class":252,"line":132},[250,48227,19356],{"class":912},[250,48229,48230],{"class":252,"line":310},[250,48231,1077],{"class":912},[20,48233,23486,48234,2390],{},[203,48235,23492],{"href":23489,"rel":48236,"title":23491},[207],[72,48238],{},[2459,48240,48241,23501],{"id":23497},[546,48242,23500],{},[20,48244,48245,23506,48247,2390],{},[39,48246,23500],{},[203,48248,23492],{"href":23509,"rel":48249,"title":23511},[207],[47,48251,48252],{"className":1010,"code":23514,"language":1012,"meta":55,"style":55},[39,48253,48254,48266,48270,48288],{"__ignoreMap":55},[250,48255,48256,48258,48260,48262,48264],{"class":252,"line":253},[250,48257,1763],{"class":786},[250,48259,23523],{"class":912},[250,48261,1769],{"class":786},[250,48263,23528],{"class":782},[250,48265,1379],{"class":912},[250,48267,48268],{"class":252,"line":113},[250,48269,795],{"emptyLinePlaceholder":129},[250,48271,48272,48274,48276,48278,48280,48282,48284,48286],{"class":252,"line":110},[250,48273,1181],{"class":786},[250,48275,7768],{"class":912},[250,48277,227],{"class":778},[250,48279,11640],{"class":912},[250,48281,1416],{"class":786},[250,48283,1463],{"class":786},[250,48285,23551],{"class":774},[250,48287,23554],{"class":912},[250,48289,48290,48292,48294,48296,48298],{"class":252,"line":269},[250,48291,10954],{"class":912},[250,48293,1859],{"class":774},[250,48295,1434],{"class":912},[250,48297,23565],{"class":782},[250,48299,23568],{"class":912},[20,48301,23571,48302,2390],{},[203,48303,23492],{"href":23509,"rel":48304,"title":23511},[207],[72,48306],{},[2459,48308,48309,23583],{"id":23579},[546,48310,23582],{},[20,48312,48313,23588,48315,23592],{},[39,48314,23582],{},[39,48316,23591],{},[47,48318,48319],{"className":1010,"code":23595,"language":1012,"meta":55,"style":55},[39,48320,48321,48333,48337,48355],{"__ignoreMap":55},[250,48322,48323,48325,48327,48329,48331],{"class":252,"line":253},[250,48324,1763],{"class":786},[250,48326,23604],{"class":912},[250,48328,1769],{"class":786},[250,48330,23609],{"class":782},[250,48332,1379],{"class":912},[250,48334,48335],{"class":252,"line":113},[250,48336,795],{"emptyLinePlaceholder":129},[250,48338,48339,48341,48343,48345,48347,48349,48351,48353],{"class":252,"line":110},[250,48340,1181],{"class":786},[250,48342,14943],{"class":778},[250,48344,1187],{"class":786},[250,48346,1463],{"class":786},[250,48348,23628],{"class":774},[250,48350,1434],{"class":912},[250,48352,23633],{"class":782},[250,48354,1885],{"class":912},[250,48356,48357,48359,48361],{"class":252,"line":269},[250,48358,10954],{"class":912},[250,48360,1859],{"class":774},[250,48362,23644],{"class":912},[20,48364,23647,48365,2390],{},[203,48366,23492],{"href":23489,"rel":48367,"title":23491},[207],[72,48369],{},[2459,48371,48372,23659],{"id":23655},[546,48373,23658],{},[20,48375,48376,23664,48378,23668],{},[39,48377,23658],{},[546,48379,23667],{},[20,48381,23671],{},[47,48383,48384],{"className":23397,"code":23674,"language":23399,"meta":55,"style":55},[39,48385,48386,48398,48402,48416,48424,48434,48466,48470],{"__ignoreMap":55},[250,48387,48388,48390,48392,48394,48396],{"class":252,"line":253},[250,48389,1763],{"class":786},[250,48391,23683],{"class":912},[250,48393,1769],{"class":786},[250,48395,23688],{"class":782},[250,48397,1379],{"class":912},[250,48399,48400],{"class":252,"line":113},[250,48401,795],{"emptyLinePlaceholder":129},[250,48403,48404,48406,48408,48410,48412,48414],{"class":252,"line":110},[250,48405,1019],{"class":786},[250,48407,1022],{"class":786},[250,48409,23703],{"class":774},[250,48411,1112],{"class":912},[250,48413,1115],{"class":786},[250,48415,23710],{"class":912},[250,48417,48418,48420,48422],{"class":252,"line":269},[250,48419,4478],{"class":912},[250,48421,23717],{"class":782},[250,48423,927],{"class":912},[250,48425,48426,48428,48430,48432],{"class":252,"line":275},[250,48427,23724],{"class":774},[250,48429,1434],{"class":912},[250,48431,39],{"class":1370},[250,48433,1512],{"class":912},[250,48435,48436,48438,48440,48442,48444,48446,48448,48450,48452,48454,48456,48458,48460,48462,48464],{"class":252,"line":281},[250,48437,14581],{"class":786},[250,48439,23737],{"class":912},[250,48441,23740],{"class":774},[250,48443,1434],{"class":912},[250,48445,2293],{"class":782},[250,48447,23748],{"class":23747},[250,48449,2293],{"class":782},[250,48451,23753],{"class":786},[250,48453,7128],{"class":912},[250,48455,23758],{"class":778},[250,48457,2230],{"class":912},[250,48459,23763],{"class":774},[250,48461,23766],{"class":912},[250,48463,15523],{"class":778},[250,48465,1593],{"class":912},[250,48467,48468],{"class":252,"line":287},[250,48469,986],{"class":912},[250,48471,48472],{"class":252,"line":293},[250,48473,23779],{"class":912},[20,48475,23782,48476,2390],{},[203,48477,23492],{"href":23489,"rel":48478,"title":23491},[207],[72,48480],{},[2459,48482,48483,23794],{"id":23790},[546,48484,23793],{},[20,48486,48487,23799,48489,23803],{},[39,48488,23793],{},[39,48490,23802],{},[47,48492,48493],{"className":23397,"code":23806,"language":23399,"meta":55,"style":55},[39,48494,48495,48507,48519,48523,48535],{"__ignoreMap":55},[250,48496,48497,48499,48501,48503,48505],{"class":252,"line":253},[250,48498,1763],{"class":786},[250,48500,23815],{"class":912},[250,48502,1769],{"class":786},[250,48504,23820],{"class":782},[250,48506,1379],{"class":912},[250,48508,48509,48511,48513,48515,48517],{"class":252,"line":113},[250,48510,1763],{"class":786},[250,48512,23829],{"class":912},[250,48514,1769],{"class":786},[250,48516,23834],{"class":782},[250,48518,1379],{"class":912},[250,48520,48521],{"class":252,"line":110},[250,48522,795],{"emptyLinePlaceholder":129},[250,48524,48525,48527,48529,48531,48533],{"class":252,"line":269},[250,48526,1181],{"class":786},[250,48528,23847],{"class":778},[250,48530,1187],{"class":786},[250,48532,23852],{"class":774},[250,48534,23855],{"class":912},[250,48536,48537,48539,48541,48543,48545,48547,48549],{"class":252,"line":275},[250,48538,1181],{"class":786},[250,48540,8983],{"class":778},[250,48542,1187],{"class":786},[250,48544,23847],{"class":774},[250,48546,1434],{"class":912},[250,48548,23870],{"class":782},[250,48550,23873],{"class":912},[20,48552,23876,48553,2390],{},[203,48554,23492],{"href":23489,"rel":48555,"title":23491},[207],[72,48557],{},[2459,48559,48560,23888],{"id":23884},[546,48561,23887],{},[20,48563,23891],{},[47,48565,48566],{"className":1010,"code":23894,"language":1012,"meta":55,"style":55},[39,48567,48568,48580,48584,48596],{"__ignoreMap":55},[250,48569,48570,48572,48574,48576,48578],{"class":252,"line":253},[250,48571,1763],{"class":786},[250,48573,23903],{"class":912},[250,48575,1769],{"class":786},[250,48577,23908],{"class":782},[250,48579,1379],{"class":912},[250,48581,48582],{"class":252,"line":113},[250,48583,795],{"emptyLinePlaceholder":129},[250,48585,48586,48588,48590,48592,48594],{"class":252,"line":110},[250,48587,23919],{"class":912},[250,48589,631],{"class":774},[250,48591,1434],{"class":912},[250,48593,23926],{"class":782},[250,48595,1885],{"class":912},[250,48597,48598,48600,48602,48604,48606],{"class":252,"line":269},[250,48599,23919],{"class":912},[250,48601,12297],{"class":774},[250,48603,1434],{"class":912},[250,48605,23939],{"class":782},[250,48607,1885],{"class":912},[20,48609,23944,48610,2390],{},[203,48611,23492],{"href":23489,"rel":48612,"title":23491},[207],[72,48614],{},[2459,48616,48617,20180,48619,23959],{"id":23952},[546,48618,23955],{},[546,48620,23958],{},[561,48622,48623,48630],{},[564,48624,48625,23966,48627,2390],{},[39,48626,23955],{},[203,48628,23492],{"href":23489,"rel":48629,"title":23491},[207],[564,48631,48632,23974,48634,3890,48636,2390],{},[39,48633,23958],{},[39,48635,23977],{},[203,48637,23492],{"href":23489,"rel":48638,"title":23491},[207],[47,48640,48641],{"className":1010,"code":23983,"language":1012,"meta":55,"style":55},[39,48642,48643,48655,48667,48671,48685],{"__ignoreMap":55},[250,48644,48645,48647,48649,48651,48653],{"class":252,"line":253},[250,48646,1763],{"class":786},[250,48648,23992],{"class":912},[250,48650,1769],{"class":786},[250,48652,23997],{"class":782},[250,48654,1379],{"class":912},[250,48656,48657,48659,48661,48663,48665],{"class":252,"line":113},[250,48658,1763],{"class":786},[250,48660,24006],{"class":912},[250,48662,1769],{"class":786},[250,48664,24011],{"class":782},[250,48666,1379],{"class":912},[250,48668,48669],{"class":252,"line":110},[250,48670,795],{"emptyLinePlaceholder":129},[250,48672,48673,48675,48677,48679,48681,48683],{"class":252,"line":269},[250,48674,1181],{"class":786},[250,48676,24024],{"class":778},[250,48678,1187],{"class":786},[250,48680,24029],{"class":912},[250,48682,24032],{"class":778},[250,48684,5784],{"class":912},[250,48686,48687,48689,48691,48693,48695,48697,48699,48701,48703],{"class":252,"line":275},[250,48688,1181],{"class":786},[250,48690,8983],{"class":778},[250,48692,1187],{"class":786},[250,48694,24045],{"class":774},[250,48696,1434],{"class":912},[250,48698,23958],{"class":774},[250,48700,23766],{"class":912},[250,48702,24054],{"class":778},[250,48704,24057],{"class":912},[20,48706,24060,48707,24063],{},[39,48708,23500],{},[72,48710],{},[31,48712,24069],{"id":24068},[20,48714,24072],{},[2922,48716,48717,48723,48729,48735,48741,48747],{},[564,48718,48719,24079,48721,24082],{},[546,48720,18816],{},[39,48722,23500],{},[564,48724,48725,24079,48727,24090],{},[546,48726,24087],{},[39,48728,3504],{},[564,48730,48731,24079,48733,24098],{},[546,48732,24095],{},[39,48734,23582],{},[564,48736,48737,24104,48739,24107],{},[546,48738,24103],{},[39,48740,23658],{},[564,48742,48743,24079,48745,24115],{},[546,48744,24112],{},[39,48746,23793],{},[564,48748,48749,24079,48751,7128,48753,21086,48755,24127],{},[546,48750,24120],{},[39,48752,23887],{},[39,48754,23955],{},[39,48756,23958],{},[20,48758,24130],{},[72,48760],{},[31,48762,24136],{"id":24135},[20,48764,24139],{},[47,48766,48767],{"className":1010,"code":24142,"filename":24143,"language":1012,"meta":55,"style":55},[39,48768,48769,48781,48793,48805,48817,48821,48839,48843,48853,48861,48867,48871,48879,48889,48897,48903,48907,48911,48915,48923,48937,48955,48967,48973,48977,48981,48985,48989],{"__ignoreMap":55},[250,48770,48771,48773,48775,48777,48779],{"class":252,"line":253},[250,48772,1763],{"class":786},[250,48774,23413],{"class":912},[250,48776,1769],{"class":786},[250,48778,23418],{"class":782},[250,48780,1379],{"class":912},[250,48782,48783,48785,48787,48789,48791],{"class":252,"line":113},[250,48784,1763],{"class":786},[250,48786,23523],{"class":912},[250,48788,1769],{"class":786},[250,48790,23528],{"class":782},[250,48792,1379],{"class":912},[250,48794,48795,48797,48799,48801,48803],{"class":252,"line":110},[250,48796,1763],{"class":786},[250,48798,23604],{"class":912},[250,48800,1769],{"class":786},[250,48802,23609],{"class":782},[250,48804,1379],{"class":912},[250,48806,48807,48809,48811,48813,48815],{"class":252,"line":269},[250,48808,1763],{"class":786},[250,48810,23903],{"class":912},[250,48812,1769],{"class":786},[250,48814,23908],{"class":782},[250,48816,1379],{"class":912},[250,48818,48819],{"class":252,"line":275},[250,48820,795],{"emptyLinePlaceholder":129},[250,48822,48823,48825,48827,48829,48831,48833,48835,48837],{"class":252,"line":281},[250,48824,1181],{"class":786},[250,48826,7768],{"class":912},[250,48828,227],{"class":778},[250,48830,11640],{"class":912},[250,48832,1416],{"class":786},[250,48834,1463],{"class":786},[250,48836,23551],{"class":774},[250,48838,23554],{"class":912},[250,48840,48841],{"class":252,"line":287},[250,48842,795],{"emptyLinePlaceholder":129},[250,48844,48845,48847,48849,48851],{"class":252,"line":293},[250,48846,1019],{"class":786},[250,48848,1022],{"class":786},[250,48850,23433],{"class":774},[250,48852,1028],{"class":912},[250,48854,48855,48857,48859],{"class":252,"line":299},[250,48856,24234],{"class":786},[250,48858,24237],{"class":774},[250,48860,1851],{"class":912},[250,48862,48863,48865],{"class":252,"line":132},[250,48864,14581],{"class":786},[250,48866,1190],{"class":912},[250,48868,48869],{"class":252,"line":310},[250,48870,24250],{"class":912},[250,48872,48873,48875,48877],{"class":252,"line":316},[250,48874,24255],{"class":912},[250,48876,23453],{"class":782},[250,48878,927],{"class":912},[250,48880,48881,48883,48885,48887],{"class":252,"line":322},[250,48882,24264],{"class":774},[250,48884,22690],{"class":912},[250,48886,1115],{"class":786},[250,48888,23710],{"class":912},[250,48890,48891,48893,48895],{"class":252,"line":328},[250,48892,24275],{"class":912},[250,48894,24278],{"class":782},[250,48896,927],{"class":912},[250,48898,48899,48901],{"class":252,"line":334},[250,48900,24285],{"class":912},[250,48902,24288],{"class":778},[250,48904,48905],{"class":252,"line":340},[250,48906,24293],{"class":912},[250,48908,48909],{"class":252,"line":346},[250,48910,456],{"class":912},[250,48912,48913],{"class":252,"line":352},[250,48914,24250],{"class":912},[250,48916,48917,48919,48921],{"class":252,"line":358},[250,48918,24255],{"class":912},[250,48920,23633],{"class":782},[250,48922,927],{"class":912},[250,48924,48925,48927,48929,48931,48933,48935],{"class":252,"line":364},[250,48926,24264],{"class":774},[250,48928,921],{"class":912},[250,48930,1437],{"class":786},[250,48932,2015],{"class":912},[250,48934,1115],{"class":786},[250,48936,1118],{"class":912},[250,48938,48939,48941,48943,48945,48947,48949,48951,48953],{"class":252,"line":370},[250,48940,24328],{"class":786},[250,48942,14943],{"class":778},[250,48944,1187],{"class":786},[250,48946,1463],{"class":786},[250,48948,23628],{"class":774},[250,48950,1434],{"class":912},[250,48952,24341],{"class":782},[250,48954,1885],{"class":912},[250,48956,48957,48959,48961,48963,48965],{"class":252,"line":376},[250,48958,24348],{"class":912},[250,48960,631],{"class":774},[250,48962,1434],{"class":912},[250,48964,24355],{"class":782},[250,48966,24358],{"class":912},[250,48968,48969,48971],{"class":252,"line":382},[250,48970,24363],{"class":786},[250,48972,24366],{"class":912},[250,48974,48975],{"class":252,"line":388},[250,48976,3875],{"class":912},[250,48978,48979],{"class":252,"line":393},[250,48980,10550],{"class":912},[250,48982,48983],{"class":252,"line":399},[250,48984,24379],{"class":912},[250,48986,48987],{"class":252,"line":405},[250,48988,986],{"class":912},[250,48990,48991],{"class":252,"line":410},[250,48992,1077],{"class":912},[20,48994,24390,48995,24394,48997,2390],{},[546,48996,24393],{},[203,48998,23492],{"href":23489,"rel":48999,"title":23491},[207],[72,49001],{},[15,49003,3352],{"id":3351},[20,49005,23341,49006,24406,49008,24410,49010,2390],{},[546,49007,23344],{},[546,49009,24409],{},[203,49011,23492],{"href":24413,"rel":49012,"title":24415},[207],[20,49014,24418,49015,24422],{},[3587,49016,24421],{},[500,49018,24425],{},{"title":55,"searchDepth":110,"depth":110,"links":49020},[49021,49030,49031],{"id":23372,"depth":113,"text":23373,"children":49022},[49023,49024,49025,49026,49027,49028,49029],{"id":23379,"depth":110,"text":24431},{"id":23497,"depth":110,"text":24433},{"id":23579,"depth":110,"text":24435},{"id":23655,"depth":110,"text":24437},{"id":23790,"depth":110,"text":24439},{"id":23884,"depth":110,"text":24441},{"id":23952,"depth":110,"text":24443},{"id":24068,"depth":113,"text":24069},{"id":24135,"depth":113,"text":24136},{"type":12,"value":49033},[49034,49036,49044],[15,49035,541],{"id":540},[20,49037,23341,49038,23345,49040,23349,49042],{},[546,49039,23344],{},[546,49041,23348],{},[3540,49043,3543],{"index":3542},[20,49045,23354,49046,23358],{},[546,49047,23357],{},[10783,3504,23582,23658,24465,23500],{},{"title":23333,"description":24447},"unjs-packages",{"id":24472,"title":24473,"author":49053,"body":49054,"canonical":115,"categories":115,"date":28128,"description":28129,"excerpt":52239,"extension":118,"img":28148,"keywords":52257,"language":3510,"meta":52258,"navigation":129,"ogImage":115,"path":28156,"rating":275,"readTime":132,"seo":52259,"stem":28158,"tag":3515,"__hash__":28159,"slug":52260},{"name":8,"img":10,"website":535},{"type":12,"value":49055,"toc":52231},[49056,49058,49060,49064,49072,49078,49080,49082,49104,49106,49108,49110,49126,49136,49138,49166,49168,49172,49356,49358,49360,49724,49726,49932,49934,50006,50008,50278,50280,50692,50694,50760,50762,50766,51590,51592,51602,51610,51612,51616,51694,51696,51706,51708,51718,51720,51744,51753,51755,51759,51907,51909,51919,51921,51923,51935,52121,52123,52181,52185,52193,52195,52217,52219,52225,52227,52229],[15,49057,541],{"id":540},[20,49059,24481],{},[20,49061,24484,49062,24488],{},[39,49063,24487],{},[20,49065,24491,49066,24495,49068,24499,49070,24503],{},[546,49067,24494],{},[546,49069,24498],{},[39,49071,24502],{},[24,49073,49074],{"type":631},[20,49075,24508,49076,24512],{},[39,49077,24511],{},[15,49079,24516],{"id":24515},[20,49081,24519],{},[561,49083,49084,49088,49092,49096,49100],{},[564,49085,49086,24527],{},[546,49087,24526],{},[564,49089,49090,24533],{},[546,49091,24532],{},[564,49093,49094,24539],{},[546,49095,24538],{},[564,49097,49098,24545],{},[546,49099,24544],{},[564,49101,49102,24551],{},[546,49103,24550],{},[20,49105,24554],{},[15,49107,24558],{"id":24557},[20,49109,24561],{},[47,49111,49112],{"className":758,"code":24564,"language":761,"meta":55,"style":55},[39,49113,49114],{"__ignoreMap":55},[250,49115,49116,49118,49120,49122,49124],{"class":252,"line":253},[250,49117,24571],{"class":774},[250,49119,24574],{"class":782},[250,49121,24577],{"class":782},[250,49123,24580],{"class":778},[250,49125,24583],{"class":782},[47,49127,49128],{"className":758,"code":24586,"language":761,"meta":55,"style":55},[39,49129,49130],{"__ignoreMap":55},[250,49131,49132,49134],{"class":252,"line":253},[250,49133,24571],{"class":774},[250,49135,896],{"class":782},[20,49137,24597],{},[47,49139,49140],{"className":12725,"code":24600,"language":12727,"meta":55,"style":55},[39,49141,49142,49146,49150,49154,49158,49162],{"__ignoreMap":55},[250,49143,49144],{"class":252,"line":253},[250,49145,24607],{},[250,49147,49148],{"class":252,"line":113},[250,49149,24612],{},[250,49151,49152],{"class":252,"line":110},[250,49153,24617],{},[250,49155,49156],{"class":252,"line":269},[250,49157,24622],{},[250,49159,49160],{"class":252,"line":275},[250,49161,24627],{},[250,49163,49164],{"class":252,"line":281},[250,49165,24632],{},[15,49167,24636],{"id":24635},[20,49169,1092,49170,1007],{},[39,49171,24641],{},[47,49173,49174],{"className":1010,"code":24644,"filename":24641,"language":1012,"meta":55,"style":55},[39,49175,49176,49186,49196,49206,49216,49226,49230,49234,49244,49254,49264,49274,49278,49282,49292,49302,49312,49322,49332,49342,49352],{"__ignoreMap":55},[250,49177,49178,49180,49182,49184],{"class":252,"line":253},[250,49179,1019],{"class":786},[250,49181,8532],{"class":786},[250,49183,24655],{"class":774},[250,49185,1118],{"class":912},[250,49187,49188,49190,49192,49194],{"class":252,"line":113},[250,49189,24662],{"class":1370},[250,49191,1007],{"class":786},[250,49193,2506],{"class":778},[250,49195,1379],{"class":912},[250,49197,49198,49200,49202,49204],{"class":252,"line":110},[250,49199,24673],{"class":1370},[250,49201,1007],{"class":786},[250,49203,1376],{"class":778},[250,49205,1379],{"class":912},[250,49207,49208,49210,49212,49214],{"class":252,"line":269},[250,49209,24684],{"class":1370},[250,49211,1007],{"class":786},[250,49213,1376],{"class":778},[250,49215,1379],{"class":912},[250,49217,49218,49220,49222,49224],{"class":252,"line":275},[250,49219,24695],{"class":1370},[250,49221,1007],{"class":786},[250,49223,1376],{"class":778},[250,49225,1379],{"class":912},[250,49227,49228],{"class":252,"line":281},[250,49229,991],{"class":912},[250,49231,49232],{"class":252,"line":287},[250,49233,795],{"emptyLinePlaceholder":129},[250,49235,49236,49238,49240,49242],{"class":252,"line":293},[250,49237,1019],{"class":786},[250,49239,8532],{"class":786},[250,49241,24718],{"class":774},[250,49243,1118],{"class":912},[250,49245,49246,49248,49250,49252],{"class":252,"line":299},[250,49247,2501],{"class":1370},[250,49249,1007],{"class":786},[250,49251,2506],{"class":778},[250,49253,1379],{"class":912},[250,49255,49256,49258,49260,49262],{"class":252,"line":132},[250,49257,24735],{"class":1370},[250,49259,1007],{"class":786},[250,49261,1376],{"class":778},[250,49263,1379],{"class":912},[250,49265,49266,49268,49270,49272],{"class":252,"line":310},[250,49267,24746],{"class":1370},[250,49269,1007],{"class":786},[250,49271,1376],{"class":778},[250,49273,1379],{"class":912},[250,49275,49276],{"class":252,"line":316},[250,49277,991],{"class":912},[250,49279,49280],{"class":252,"line":322},[250,49281,795],{"emptyLinePlaceholder":129},[250,49283,49284,49286,49288,49290],{"class":252,"line":328},[250,49285,1019],{"class":786},[250,49287,8532],{"class":786},[250,49289,24769],{"class":774},[250,49291,1118],{"class":912},[250,49293,49294,49296,49298,49300],{"class":252,"line":334},[250,49295,24776],{"class":1370},[250,49297,1007],{"class":786},[250,49299,1376],{"class":778},[250,49301,1379],{"class":912},[250,49303,49304,49306,49308,49310],{"class":252,"line":340},[250,49305,24787],{"class":1370},[250,49307,1007],{"class":786},[250,49309,1376],{"class":778},[250,49311,1379],{"class":912},[250,49313,49314,49316,49318,49320],{"class":252,"line":346},[250,49315,24798],{"class":1370},[250,49317,1007],{"class":786},[250,49319,1376],{"class":778},[250,49321,1379],{"class":912},[250,49323,49324,49326,49328,49330],{"class":252,"line":352},[250,49325,24809],{"class":1370},[250,49327,1007],{"class":786},[250,49329,1376],{"class":778},[250,49331,1379],{"class":912},[250,49333,49334,49336,49338,49340],{"class":252,"line":358},[250,49335,24820],{"class":1370},[250,49337,1007],{"class":786},[250,49339,1376],{"class":778},[250,49341,1379],{"class":912},[250,49343,49344,49346,49348,49350],{"class":252,"line":364},[250,49345,24831],{"class":1370},[250,49347,1007],{"class":786},[250,49349,1376],{"class":778},[250,49351,1379],{"class":912},[250,49353,49354],{"class":252,"line":370},[250,49355,991],{"class":912},[15,49357,24845],{"id":24844},[31,49359,24849],{"id":24848},[47,49361,49362],{"className":1010,"code":24852,"filename":24853,"language":1012,"meta":55,"style":55},[39,49363,49364,49378,49382,49398,49418,49438,49458,49478,49498,49502,49506,49516,49526,49540,49550,49576,49608,49620,49624,49628,49638,49648,49662,49672,49684,49708,49720],{"__ignoreMap":55},[250,49365,49366,49368,49370,49372,49374,49376],{"class":252,"line":253},[250,49367,1763],{"class":786},[250,49369,4974],{"class":786},[250,49371,24864],{"class":912},[250,49373,1769],{"class":786},[250,49375,24869],{"class":782},[250,49377,1379],{"class":912},[250,49379,49380],{"class":252,"line":113},[250,49381,795],{"emptyLinePlaceholder":129},[250,49383,49384,49386,49388,49390,49392,49394,49396],{"class":252,"line":110},[250,49385,1181],{"class":786},[250,49387,24882],{"class":778},[250,49389,1007],{"class":786},[250,49391,24655],{"class":774},[250,49393,1413],{"class":912},[250,49395,1416],{"class":786},[250,49397,1190],{"class":912},[250,49399,49400,49402,49404,49406,49408,49410,49412,49414,49416],{"class":252,"line":269},[250,49401,24897],{"class":912},[250,49403,24900],{"class":782},[250,49405,24903],{"class":912},[250,49407,24906],{"class":778},[250,49409,24909],{"class":912},[250,49411,1590],{"class":778},[250,49413,24914],{"class":912},[250,49415,1283],{"class":778},[250,49417,1219],{"class":912},[250,49419,49420,49422,49424,49426,49428,49430,49432,49434,49436],{"class":252,"line":275},[250,49421,24897],{"class":912},[250,49423,24925],{"class":782},[250,49425,24903],{"class":912},[250,49427,24930],{"class":778},[250,49429,24909],{"class":912},[250,49431,24935],{"class":778},[250,49433,24914],{"class":912},[250,49435,1236],{"class":778},[250,49437,1219],{"class":912},[250,49439,49440,49442,49444,49446,49448,49450,49452,49454,49456],{"class":252,"line":281},[250,49441,24897],{"class":912},[250,49443,24948],{"class":782},[250,49445,24903],{"class":912},[250,49447,24953],{"class":778},[250,49449,24909],{"class":912},[250,49451,24958],{"class":778},[250,49453,24914],{"class":912},[250,49455,24963],{"class":778},[250,49457,1219],{"class":912},[250,49459,49460,49462,49464,49466,49468,49470,49472,49474,49476],{"class":252,"line":287},[250,49461,24897],{"class":912},[250,49463,24972],{"class":782},[250,49465,24903],{"class":912},[250,49467,15548],{"class":778},[250,49469,24909],{"class":912},[250,49471,24981],{"class":778},[250,49473,24914],{"class":912},[250,49475,24986],{"class":778},[250,49477,1219],{"class":912},[250,49479,49480,49482,49484,49486,49488,49490,49492,49494,49496],{"class":252,"line":293},[250,49481,24897],{"class":912},[250,49483,24995],{"class":782},[250,49485,24903],{"class":912},[250,49487,3542],{"class":778},[250,49489,24909],{"class":912},[250,49491,25004],{"class":778},[250,49493,24914],{"class":912},[250,49495,25009],{"class":778},[250,49497,1219],{"class":912},[250,49499,49500],{"class":252,"line":299},[250,49501,1317],{"class":912},[250,49503,49504],{"class":252,"line":132},[250,49505,795],{"emptyLinePlaceholder":129},[250,49507,49508,49510,49512,49514],{"class":252,"line":310},[250,49509,1019],{"class":786},[250,49511,1845],{"class":786},[250,49513,25028],{"class":774},[250,49515,1982],{"class":912},[250,49517,49518,49520,49522,49524],{"class":252,"line":316},[250,49519,25035],{"class":1370},[250,49521,1007],{"class":786},[250,49523,1376],{"class":778},[250,49525,927],{"class":912},[250,49527,49528,49530,49532,49534,49536,49538],{"class":252,"line":322},[250,49529,25046],{"class":1370},[250,49531,1007],{"class":786},[250,49533,24655],{"class":774},[250,49535,1413],{"class":912},[250,49537,1416],{"class":786},[250,49539,25057],{"class":778},[250,49541,49542,49544,49546,49548],{"class":252,"line":328},[250,49543,2390],{"class":912},[250,49545,1007],{"class":786},[250,49547,2506],{"class":778},[250,49549,1118],{"class":912},[250,49551,49552,49554,49556,49558,49560,49562,49564,49566,49568,49570,49572,49574],{"class":252,"line":334},[250,49553,1455],{"class":786},[250,49555,25074],{"class":778},[250,49557,1187],{"class":786},[250,49559,2277],{"class":912},[250,49561,25081],{"class":774},[250,49563,1434],{"class":912},[250,49565,3542],{"class":778},[250,49567,25088],{"class":912},[250,49569,25091],{"class":774},[250,49571,1434],{"class":912},[250,49573,1590],{"class":778},[250,49575,25098],{"class":912},[250,49577,49578,49580,49582,49584,49586,49588,49590,49592,49594,49596,49598,49600,49602,49604,49606],{"class":252,"line":340},[250,49579,1455],{"class":786},[250,49581,25105],{"class":778},[250,49583,1187],{"class":786},[250,49585,25110],{"class":912},[250,49587,25113],{"class":774},[250,49589,1434],{"class":912},[250,49591,25118],{"class":1370},[250,49593,23033],{"class":786},[250,49595,25123],{"class":912},[250,49597,2030],{"class":786},[250,49599,25128],{"class":912},[250,49601,10479],{"class":786},[250,49603,25123],{"class":912},[250,49605,25135],{"class":786},[250,49607,25138],{"class":912},[250,49609,49610,49612,49614,49616,49618],{"class":252,"line":346},[250,49611,1123],{"class":786},[250,49613,25145],{"class":912},[250,49615,25148],{"class":786},[250,49617,25151],{"class":782},[250,49619,1379],{"class":912},[250,49621,49622],{"class":252,"line":352},[250,49623,991],{"class":912},[250,49625,49626],{"class":252,"line":358},[250,49627,795],{"emptyLinePlaceholder":129},[250,49629,49630,49632,49634,49636],{"class":252,"line":364},[250,49631,1019],{"class":786},[250,49633,1845],{"class":786},[250,49635,25170],{"class":774},[250,49637,1982],{"class":912},[250,49639,49640,49642,49644,49646],{"class":252,"line":370},[250,49641,25035],{"class":1370},[250,49643,1007],{"class":786},[250,49645,1376],{"class":778},[250,49647,927],{"class":912},[250,49649,49650,49652,49654,49656,49658,49660],{"class":252,"line":376},[250,49651,25046],{"class":1370},[250,49653,1007],{"class":786},[250,49655,24655],{"class":774},[250,49657,1413],{"class":912},[250,49659,1416],{"class":786},[250,49661,25057],{"class":778},[250,49663,49664,49666,49668,49670],{"class":252,"line":382},[250,49665,2390],{"class":912},[250,49667,1007],{"class":786},[250,49669,1376],{"class":778},[250,49671,1118],{"class":912},[250,49673,49674,49676,49678,49680,49682],{"class":252,"line":388},[250,49675,1455],{"class":786},[250,49677,25213],{"class":778},[250,49679,1187],{"class":786},[250,49681,25028],{"class":774},[250,49683,25220],{"class":912},[250,49685,49686,49688,49690,49692,49694,49696,49698,49700,49702,49704,49706],{"class":252,"line":393},[250,49687,1455],{"class":786},[250,49689,25105],{"class":778},[250,49691,1187],{"class":786},[250,49693,25110],{"class":912},[250,49695,25113],{"class":774},[250,49697,1434],{"class":912},[250,49699,25118],{"class":1370},[250,49701,23033],{"class":786},[250,49703,25241],{"class":912},[250,49705,25244],{"class":786},[250,49707,25247],{"class":912},[250,49709,49710,49712,49714,49716,49718],{"class":252,"line":399},[250,49711,1123],{"class":786},[250,49713,25254],{"class":912},[250,49715,25148],{"class":786},[250,49717,1509],{"class":778},[250,49719,1379],{"class":912},[250,49721,49722],{"class":252,"line":405},[250,49723,991],{"class":912},[31,49725,25268],{"id":25267},[47,49727,49728],{"className":1010,"code":25271,"filename":25272,"language":1012,"meta":55,"style":55},[39,49729,49730,49744,49748,49772,49792,49796,49830,49848,49852,49866,49890,49894,49898,49902,49928],{"__ignoreMap":55},[250,49731,49732,49734,49736,49738,49740,49742],{"class":252,"line":253},[250,49733,1763],{"class":786},[250,49735,4974],{"class":786},[250,49737,25283],{"class":912},[250,49739,1769],{"class":786},[250,49741,24869],{"class":782},[250,49743,1379],{"class":912},[250,49745,49746],{"class":252,"line":113},[250,49747,795],{"emptyLinePlaceholder":129},[250,49749,49750,49752,49754,49756,49758,49760,49762,49764,49766,49768,49770],{"class":252,"line":110},[250,49751,1019],{"class":786},[250,49753,1845],{"class":786},[250,49755,25302],{"class":774},[250,49757,1434],{"class":912},[250,49759,25307],{"class":1370},[250,49761,1007],{"class":786},[250,49763,24718],{"class":774},[250,49765,25314],{"class":912},[250,49767,1007],{"class":786},[250,49769,1376],{"class":778},[250,49771,1118],{"class":912},[250,49773,49774,49776,49778,49780,49782,49784,49786,49788,49790],{"class":252,"line":269},[250,49775,1486],{"class":786},[250,49777,25327],{"class":912},[250,49779,1503],{"class":778},[250,49781,1506],{"class":786},[250,49783,1509],{"class":778},[250,49785,1446],{"class":912},[250,49787,25338],{"class":786},[250,49789,1509],{"class":778},[250,49791,1379],{"class":912},[250,49793,49794],{"class":252,"line":275},[250,49795,795],{"emptyLinePlaceholder":129},[250,49797,49798,49800,49802,49804,49806,49808,49810,49812,49814,49816,49818,49820,49822,49824,49826,49828],{"class":252,"line":281},[250,49799,1455],{"class":786},[250,49801,25353],{"class":778},[250,49803,1187],{"class":786},[250,49805,25358],{"class":912},[250,49807,25361],{"class":774},[250,49809,1574],{"class":912},[250,49811,25366],{"class":1370},[250,49813,7128],{"class":912},[250,49815,25371],{"class":1370},[250,49817,1446],{"class":912},[250,49819,1115],{"class":786},[250,49821,25378],{"class":912},[250,49823,25381],{"class":786},[250,49825,25384],{"class":912},[250,49827,3542],{"class":778},[250,49829,1885],{"class":912},[250,49831,49832,49834,49836,49838,49840,49842,49844,49846],{"class":252,"line":287},[250,49833,1486],{"class":786},[250,49835,25395],{"class":912},[250,49837,25244],{"class":786},[250,49839,1509],{"class":778},[250,49841,1446],{"class":912},[250,49843,25338],{"class":786},[250,49845,1509],{"class":778},[250,49847,1379],{"class":912},[250,49849,49850],{"class":252,"line":293},[250,49851,795],{"emptyLinePlaceholder":129},[250,49853,49854,49856,49858,49860,49862,49864],{"class":252,"line":299},[250,49855,1455],{"class":786},[250,49857,25418],{"class":778},[250,49859,1187],{"class":786},[250,49861,25358],{"class":912},[250,49863,25361],{"class":774},[250,49865,1982],{"class":912},[250,49867,49868,49870,49872,49874,49876,49878,49880,49882,49884,49886,49888],{"class":252,"line":132},[250,49869,25431],{"class":912},[250,49871,25366],{"class":1370},[250,49873,7128],{"class":912},[250,49875,25371],{"class":1370},[250,49877,1446],{"class":912},[250,49879,1115],{"class":786},[250,49881,25378],{"class":912},[250,49883,25381],{"class":786},[250,49885,25448],{"class":912},[250,49887,6594],{"class":786},[250,49889,25453],{"class":912},[250,49891,49892],{"class":252,"line":310},[250,49893,25458],{"class":778},[250,49895,49896],{"class":252,"line":316},[250,49897,2859],{"class":912},[250,49899,49900],{"class":252,"line":322},[250,49901,795],{"emptyLinePlaceholder":129},[250,49903,49904,49906,49908,49910,49912,49914,49916,49918,49920,49922,49924,49926],{"class":252,"line":328},[250,49905,1123],{"class":786},[250,49907,2277],{"class":912},[250,49909,2280],{"class":774},[250,49911,25477],{"class":912},[250,49913,2293],{"class":786},[250,49915,25482],{"class":912},[250,49917,6594],{"class":786},[250,49919,1832],{"class":778},[250,49921,1446],{"class":912},[250,49923,2293],{"class":786},[250,49925,1832],{"class":778},[250,49927,1379],{"class":912},[250,49929,49930],{"class":252,"line":334},[250,49931,991],{"class":912},[20,49933,25501],{},[47,49935,49936],{"className":1010,"code":25504,"language":1012,"meta":55,"style":55},[39,49937,49938,49950,49966,49982,49998,50002],{"__ignoreMap":55},[250,49939,49940,49942,49944,49946,49948],{"class":252,"line":253},[250,49941,1181],{"class":786},[250,49943,25513],{"class":778},[250,49945,1187],{"class":786},[250,49947,25302],{"class":774},[250,49949,25520],{"class":912},[250,49951,49952,49954,49956,49958,49960,49962,49964],{"class":252,"line":113},[250,49953,25525],{"class":912},[250,49955,25528],{"class":782},[250,49957,25531],{"class":912},[250,49959,25534],{"class":778},[250,49961,25537],{"class":912},[250,49963,25540],{"class":778},[250,49965,1219],{"class":912},[250,49967,49968,49970,49972,49974,49976,49978,49980],{"class":252,"line":110},[250,49969,25525],{"class":912},[250,49971,25549],{"class":782},[250,49973,25531],{"class":912},[250,49975,25554],{"class":778},[250,49977,25537],{"class":912},[250,49979,25540],{"class":778},[250,49981,1219],{"class":912},[250,49983,49984,49986,49988,49990,49992,49994,49996],{"class":252,"line":269},[250,49985,25525],{"class":912},[250,49987,25567],{"class":782},[250,49989,25531],{"class":912},[250,49991,25572],{"class":778},[250,49993,25537],{"class":912},[250,49995,25577],{"class":778},[250,49997,1219],{"class":912},[250,49999,50000],{"class":252,"line":275},[250,50001,25584],{"class":912},[250,50003,50004],{"class":252,"line":281},[250,50005,25589],{"class":768},[31,50007,25593],{"id":25592},[47,50009,50010],{"className":1010,"code":25596,"filename":25597,"language":1012,"meta":55,"style":55},[39,50011,50012,50022,50032,50044,50054,50072,50086,50090,50104,50132,50136,50140,50150,50160,50172,50182,50224,50238,50274],{"__ignoreMap":55},[250,50013,50014,50016,50018,50020],{"class":252,"line":253},[250,50015,1019],{"class":786},[250,50017,1845],{"class":786},[250,50019,25608],{"class":774},[250,50021,1982],{"class":912},[250,50023,50024,50026,50028,50030],{"class":252,"line":113},[250,50025,25615],{"class":1370},[250,50027,1007],{"class":786},[250,50029,1376],{"class":778},[250,50031,25622],{"class":912},[250,50033,50034,50036,50038,50040,50042],{"class":252,"line":110},[250,50035,25627],{"class":1370},[250,50037,1007],{"class":786},[250,50039,1376],{"class":778},[250,50041,1187],{"class":786},[250,50043,25636],{"class":778},[250,50045,50046,50048,50050,50052],{"class":252,"line":269},[250,50047,2390],{"class":912},[250,50049,1007],{"class":786},[250,50051,1376],{"class":778},[250,50053,25647],{"class":912},[250,50055,50056,50058,50060,50062,50064,50066,50068,50070],{"class":252,"line":275},[250,50057,1455],{"class":786},[250,50059,25654],{"class":778},[250,50061,1187],{"class":786},[250,50063,2277],{"class":912},[250,50065,25081],{"class":774},[250,50067,1434],{"class":912},[250,50069,7771],{"class":786},[250,50071,25667],{"class":912},[250,50073,50074,50076,50078,50080,50082,50084],{"class":252,"line":281},[250,50075,1486],{"class":786},[250,50077,25674],{"class":912},[250,50079,2030],{"class":786},[250,50081,25679],{"class":912},[250,50083,25338],{"class":786},[250,50085,25684],{"class":912},[250,50087,50088],{"class":252,"line":287},[250,50089,795],{"emptyLinePlaceholder":129},[250,50091,50092,50094,50096,50098,50100,50102],{"class":252,"line":293},[250,50093,1455],{"class":786},[250,50095,25695],{"class":778},[250,50097,1187],{"class":786},[250,50099,25700],{"class":912},[250,50101,2261],{"class":786},[250,50103,25705],{"class":912},[250,50105,50106,50108,50110,50112,50114,50116,50118,50120,50122,50124,50126,50128,50130],{"class":252,"line":299},[250,50107,1123],{"class":786},[250,50109,25712],{"class":912},[250,50111,2820],{"class":774},[250,50113,1434],{"class":912},[250,50115,25118],{"class":1370},[250,50117,23033],{"class":786},[250,50119,2277],{"class":912},[250,50121,25091],{"class":774},[250,50123,1434],{"class":912},[250,50125,1590],{"class":778},[250,50127,25731],{"class":912},[250,50129,25381],{"class":786},[250,50131,25736],{"class":912},[250,50133,50134],{"class":252,"line":132},[250,50135,991],{"class":912},[250,50137,50138],{"class":252,"line":310},[250,50139,795],{"emptyLinePlaceholder":129},[250,50141,50142,50144,50146,50148],{"class":252,"line":316},[250,50143,1019],{"class":786},[250,50145,1845],{"class":786},[250,50147,25753],{"class":774},[250,50149,1982],{"class":912},[250,50151,50152,50154,50156,50158],{"class":252,"line":322},[250,50153,25615],{"class":1370},[250,50155,1007],{"class":786},[250,50157,1376],{"class":778},[250,50159,25622],{"class":912},[250,50161,50162,50164,50166,50168,50170],{"class":252,"line":328},[250,50163,25770],{"class":1370},[250,50165,1007],{"class":786},[250,50167,1376],{"class":778},[250,50169,1187],{"class":786},[250,50171,25779],{"class":778},[250,50173,50174,50176,50178,50180],{"class":252,"line":334},[250,50175,2390],{"class":912},[250,50177,1007],{"class":786},[250,50179,1376],{"class":778},[250,50181,25647],{"class":912},[250,50183,50184,50186,50188,50190,50192,50194,50196,50198,50200,50202,50204,50206,50208,50210,50212,50214,50216,50218,50220,50222],{"class":252,"line":340},[250,50185,1455],{"class":786},[250,50187,25796],{"class":778},[250,50189,1187],{"class":786},[250,50191,25712],{"class":912},[250,50193,25361],{"class":774},[250,50195,1574],{"class":912},[250,50197,203],{"class":1370},[250,50199,7128],{"class":912},[250,50201,25811],{"class":1370},[250,50203,1446],{"class":912},[250,50205,1115],{"class":786},[250,50207,25818],{"class":912},[250,50209,25381],{"class":786},[250,50211,25823],{"class":912},[250,50213,3542],{"class":778},[250,50215,1446],{"class":912},[250,50217,2293],{"class":786},[250,50219,25712],{"class":912},[250,50221,1503],{"class":778},[250,50223,1379],{"class":912},[250,50225,50226,50228,50230,50232,50234,50236],{"class":252,"line":346},[250,50227,1455],{"class":786},[250,50229,25842],{"class":778},[250,50231,1187],{"class":786},[250,50233,25847],{"class":912},[250,50235,2261],{"class":786},[250,50237,25852],{"class":912},[250,50239,50240,50242,50244,50246,50248,50250,50252,50254,50256,50258,50260,50262,50264,50266,50268,50270,50272],{"class":252,"line":352},[250,50241,1123],{"class":786},[250,50243,25712],{"class":912},[250,50245,2820],{"class":774},[250,50247,1434],{"class":912},[250,50249,25118],{"class":1370},[250,50251,23033],{"class":786},[250,50253,2277],{"class":912},[250,50255,25081],{"class":774},[250,50257,1434],{"class":912},[250,50259,3542],{"class":778},[250,50261,25088],{"class":912},[250,50263,25091],{"class":774},[250,50265,1434],{"class":912},[250,50267,1590],{"class":778},[250,50269,25731],{"class":912},[250,50271,25381],{"class":786},[250,50273,25889],{"class":912},[250,50275,50276],{"class":252,"line":358},[250,50277,991],{"class":912},[31,50279,25897],{"id":25896},[47,50281,50282],{"className":1010,"code":25900,"filename":25901,"language":1012,"meta":55,"style":55},[39,50283,50284,50298,50302,50326,50340,50370,50374,50378,50412,50426,50460,50474,50478,50498,50516,50536,50542,50546,50594,50624,50628,50634,50654,50658,50662,50672,50680,50684,50688],{"__ignoreMap":55},[250,50285,50286,50288,50290,50292,50294,50296],{"class":252,"line":253},[250,50287,1763],{"class":786},[250,50289,4974],{"class":786},[250,50291,25912],{"class":912},[250,50293,1769],{"class":786},[250,50295,24869],{"class":782},[250,50297,1379],{"class":912},[250,50299,50300],{"class":252,"line":113},[250,50301,795],{"emptyLinePlaceholder":129},[250,50303,50304,50306,50308,50310,50312,50314,50316,50318,50320,50322,50324],{"class":252,"line":110},[250,50305,1019],{"class":786},[250,50307,1845],{"class":786},[250,50309,25931],{"class":774},[250,50311,1434],{"class":912},[250,50313,25936],{"class":1370},[250,50315,1007],{"class":786},[250,50317,1376],{"class":778},[250,50319,25314],{"class":912},[250,50321,1007],{"class":786},[250,50323,24769],{"class":774},[250,50325,1118],{"class":912},[250,50327,50328,50330,50332,50334,50336,50338],{"class":252,"line":269},[250,50329,1486],{"class":786},[250,50331,25955],{"class":912},[250,50333,1503],{"class":778},[250,50335,1506],{"class":786},[250,50337,1509],{"class":778},[250,50339,1512],{"class":912},[250,50341,50342,50344,50346,50348,50350,50352,50354,50356,50358,50360,50362,50364,50366,50368],{"class":252,"line":275},[250,50343,14581],{"class":786},[250,50345,25970],{"class":912},[250,50347,3542],{"class":778},[250,50349,25975],{"class":912},[250,50351,3542],{"class":778},[250,50353,25980],{"class":912},[250,50355,3542],{"class":778},[250,50357,25985],{"class":912},[250,50359,3542],{"class":778},[250,50361,25990],{"class":912},[250,50363,3542],{"class":778},[250,50365,25995],{"class":912},[250,50367,3542],{"class":778},[250,50369,5784],{"class":912},[250,50371,50372],{"class":252,"line":281},[250,50373,986],{"class":912},[250,50375,50376],{"class":252,"line":287},[250,50377,795],{"emptyLinePlaceholder":129},[250,50379,50380,50382,50384,50386,50388,50390,50392,50394,50396,50398,50400,50402,50404,50406,50408,50410],{"class":252,"line":293},[250,50381,1455],{"class":786},[250,50383,26014],{"class":778},[250,50385,1187],{"class":786},[250,50387,7123],{"class":912},[250,50389,7771],{"class":786},[250,50391,26023],{"class":912},[250,50393,26026],{"class":774},[250,50395,1574],{"class":912},[250,50397,203],{"class":1370},[250,50399,7128],{"class":912},[250,50401,25811],{"class":1370},[250,50403,1446],{"class":912},[250,50405,1115],{"class":786},[250,50407,25818],{"class":912},[250,50409,2261],{"class":786},[250,50411,26045],{"class":912},[250,50413,50414,50416,50418,50420,50422,50424],{"class":252,"line":299},[250,50415,1455],{"class":786},[250,50417,26052],{"class":778},[250,50419,1187],{"class":786},[250,50421,26057],{"class":912},[250,50423,1503],{"class":778},[250,50425,1379],{"class":912},[250,50427,50428,50430,50432,50434,50436,50438,50440,50442,50444,50446,50448,50450,50452,50454,50456,50458],{"class":252,"line":132},[250,50429,1455],{"class":786},[250,50431,26068],{"class":778},[250,50433,1187],{"class":786},[250,50435,26057],{"class":912},[250,50437,25361],{"class":774},[250,50439,1574],{"class":912},[250,50441,203],{"class":1370},[250,50443,7128],{"class":912},[250,50445,25811],{"class":1370},[250,50447,1446],{"class":912},[250,50449,1115],{"class":786},[250,50451,25818],{"class":912},[250,50453,25381],{"class":786},[250,50455,25823],{"class":912},[250,50457,3542],{"class":778},[250,50459,1885],{"class":912},[250,50461,50462,50464,50466,50468,50470,50472],{"class":252,"line":310},[250,50463,1455],{"class":786},[250,50465,25796],{"class":778},[250,50467,1187],{"class":786},[250,50469,25378],{"class":912},[250,50471,2293],{"class":786},[250,50473,26111],{"class":912},[250,50475,50476],{"class":252,"line":316},[250,50477,795],{"emptyLinePlaceholder":129},[250,50479,50480,50482,50484,50486,50488,50490,50492,50494,50496],{"class":252,"line":322},[250,50481,1455],{"class":786},[250,50483,26122],{"class":778},[250,50485,1187],{"class":786},[250,50487,2277],{"class":912},[250,50489,26129],{"class":774},[250,50491,26132],{"class":912},[250,50493,2293],{"class":786},[250,50495,26137],{"class":778},[250,50497,1885],{"class":912},[250,50499,50500,50502,50504,50506,50508,50510,50512,50514],{"class":252,"line":328},[250,50501,1455],{"class":786},[250,50503,26146],{"class":778},[250,50505,1187],{"class":786},[250,50507,26151],{"class":912},[250,50509,26154],{"class":786},[250,50511,26137],{"class":778},[250,50513,1506],{"class":786},[250,50515,26161],{"class":778},[250,50517,50518,50520,50522,50524,50526,50528,50530,50532,50534],{"class":252,"line":334},[250,50519,26166],{"class":786},[250,50521,26169],{"class":912},[250,50523,2261],{"class":786},[250,50525,26174],{"class":778},[250,50527,22052],{"class":912},[250,50529,25381],{"class":786},[250,50531,26181],{"class":912},[250,50533,2293],{"class":786},[250,50535,26186],{"class":778},[250,50537,50538,50540],{"class":252,"line":340},[250,50539,26191],{"class":786},[250,50541,26194],{"class":912},[250,50543,50544],{"class":252,"line":346},[250,50545,795],{"emptyLinePlaceholder":129},[250,50547,50548,50550,50552,50554,50556,50558,50560,50562,50564,50566,50568,50570,50572,50574,50576,50578,50580,50582,50584,50586,50588,50590,50592],{"class":252,"line":352},[250,50549,1455],{"class":786},[250,50551,26205],{"class":778},[250,50553,1187],{"class":786},[250,50555,26057],{"class":912},[250,50557,25361],{"class":774},[250,50559,1574],{"class":912},[250,50561,26216],{"class":1370},[250,50563,7128],{"class":912},[250,50565,25118],{"class":1370},[250,50567,1446],{"class":912},[250,50569,1115],{"class":786},[250,50571,26227],{"class":912},[250,50573,25381],{"class":786},[250,50575,26232],{"class":912},[250,50577,2261],{"class":786},[250,50579,26237],{"class":912},[250,50581,26240],{"class":786},[250,50583,26137],{"class":778},[250,50585,7128],{"class":912},[250,50587,3542],{"class":778},[250,50589,1446],{"class":912},[250,50591,2293],{"class":786},[250,50593,26111],{"class":912},[250,50595,50596,50598,50600,50602,50604,50606,50608,50610,50612,50614,50616,50618,50620,50622],{"class":252,"line":358},[250,50597,1455],{"class":786},[250,50599,26259],{"class":778},[250,50601,1187],{"class":786},[250,50603,2277],{"class":912},[250,50605,2280],{"class":774},[250,50607,26268],{"class":912},[250,50609,26271],{"class":774},[250,50611,26274],{"class":912},[250,50613,6594],{"class":786},[250,50615,1832],{"class":778},[250,50617,1446],{"class":912},[250,50619,2293],{"class":786},[250,50621,1832],{"class":778},[250,50623,1379],{"class":912},[250,50625,50626],{"class":252,"line":364},[250,50627,795],{"emptyLinePlaceholder":129},[250,50629,50630,50632],{"class":252,"line":370},[250,50631,1123],{"class":786},[250,50633,1118],{"class":912},[250,50635,50636,50638,50640,50642,50644,50646,50648,50650,50652],{"class":252,"line":376},[250,50637,26301],{"class":912},[250,50639,2280],{"class":774},[250,50641,26306],{"class":912},[250,50643,6594],{"class":786},[250,50645,1832],{"class":778},[250,50647,1446],{"class":912},[250,50649,2293],{"class":786},[250,50651,1832],{"class":778},[250,50653,927],{"class":912},[250,50655,50656],{"class":252,"line":382},[250,50657,26323],{"class":912},[250,50659,50660],{"class":252,"line":388},[250,50661,26328],{"class":912},[250,50663,50664,50666,50668,50670],{"class":252,"line":393},[250,50665,26333],{"class":912},[250,50667,2261],{"class":786},[250,50669,26174],{"class":778},[250,50671,14000],{"class":912},[250,50673,50674,50676,50678],{"class":252,"line":399},[250,50675,26344],{"class":912},[250,50677,3542],{"class":778},[250,50679,14000],{"class":912},[250,50681,50682],{"class":252,"line":405},[250,50683,26353],{"class":912},[250,50685,50686],{"class":252,"line":410},[250,50687,1161],{"class":912},[250,50689,50690],{"class":252,"line":415},[250,50691,991],{"class":912},[15,50693,26365],{"id":26364},[47,50695,50696],{"className":1010,"code":26368,"filename":26369,"language":1012,"meta":55,"style":55},[39,50697,50698,50710,50722,50734,50746],{"__ignoreMap":55},[250,50699,50700,50702,50704,50706,50708],{"class":252,"line":253},[250,50701,1019],{"class":786},[250,50703,26378],{"class":912},[250,50705,1769],{"class":786},[250,50707,26383],{"class":782},[250,50709,1379],{"class":912},[250,50711,50712,50714,50716,50718,50720],{"class":252,"line":113},[250,50713,1019],{"class":786},[250,50715,26392],{"class":912},[250,50717,1769],{"class":786},[250,50719,26397],{"class":782},[250,50721,1379],{"class":912},[250,50723,50724,50726,50728,50730,50732],{"class":252,"line":110},[250,50725,1019],{"class":786},[250,50727,26406],{"class":912},[250,50729,1769],{"class":786},[250,50731,26411],{"class":782},[250,50733,1379],{"class":912},[250,50735,50736,50738,50740,50742,50744],{"class":252,"line":269},[250,50737,1019],{"class":786},[250,50739,26420],{"class":912},[250,50741,1769],{"class":786},[250,50743,26425],{"class":782},[250,50745,1379],{"class":912},[250,50747,50748,50750,50752,50754,50756,50758],{"class":252,"line":275},[250,50749,1019],{"class":786},[250,50751,4974],{"class":786},[250,50753,26436],{"class":912},[250,50755,1769],{"class":786},[250,50757,24869],{"class":782},[250,50759,1379],{"class":912},[15,50761,26446],{"id":26445},[20,50763,1092,50764,1007],{},[39,50765,26451],{},[47,50767,50768],{"className":1010,"code":26454,"filename":26451,"language":1012,"meta":55,"style":55},[39,50769,50770,50782,50794,50806,50818,50830,50834,50848,50862,50884,50906,50928,50950,50972,50976,50980,50994,51016,51040,51044,51048,51052,51066,51080,51102,51124,51146,51150,51154,51158,51172,51186,51198,51214,51230,51234,51248,51252,51256,51270,51288,51292,51296,51300,51314,51328,51356,51378,51382,51386,51400,51422,51440,51444,51448,51452,51466,51480,51512,51526,51540,51554,51568,51582,51586],{"__ignoreMap":55},[250,50771,50772,50774,50776,50778,50780],{"class":252,"line":253},[250,50773,1763],{"class":786},[250,50775,26463],{"class":912},[250,50777,1769],{"class":786},[250,50779,26468],{"class":782},[250,50781,1379],{"class":912},[250,50783,50784,50786,50788,50790,50792],{"class":252,"line":113},[250,50785,1763],{"class":786},[250,50787,26378],{"class":912},[250,50789,1769],{"class":786},[250,50791,26383],{"class":782},[250,50793,1379],{"class":912},[250,50795,50796,50798,50800,50802,50804],{"class":252,"line":110},[250,50797,1763],{"class":786},[250,50799,26392],{"class":912},[250,50801,1769],{"class":786},[250,50803,26397],{"class":782},[250,50805,1379],{"class":912},[250,50807,50808,50810,50812,50814,50816],{"class":252,"line":269},[250,50809,1763],{"class":786},[250,50811,26406],{"class":912},[250,50813,1769],{"class":786},[250,50815,26411],{"class":782},[250,50817,1379],{"class":912},[250,50819,50820,50822,50824,50826,50828],{"class":252,"line":275},[250,50821,1763],{"class":786},[250,50823,26420],{"class":912},[250,50825,1769],{"class":786},[250,50827,26425],{"class":782},[250,50829,1379],{"class":912},[250,50831,50832],{"class":252,"line":281},[250,50833,795],{"emptyLinePlaceholder":129},[250,50835,50836,50838,50840,50842,50844,50846],{"class":252,"line":287},[250,50837,26527],{"class":774},[250,50839,1434],{"class":912},[250,50841,26532],{"class":782},[250,50843,13157],{"class":912},[250,50845,1115],{"class":786},[250,50847,1118],{"class":912},[250,50849,50850,50852,50854,50856,50858,50860],{"class":252,"line":293},[250,50851,26543],{"class":774},[250,50853,1434],{"class":912},[250,50855,26548],{"class":782},[250,50857,13157],{"class":912},[250,50859,1115],{"class":786},[250,50861,1118],{"class":912},[250,50863,50864,50866,50868,50870,50872,50874,50876,50878,50880,50882],{"class":252,"line":299},[250,50865,26559],{"class":774},[250,50867,1434],{"class":912},[250,50869,26564],{"class":774},[250,50871,1434],{"class":912},[250,50873,26569],{"class":778},[250,50875,26572],{"class":912},[250,50877,26575],{"class":774},[250,50879,1434],{"class":912},[250,50881,24900],{"class":782},[250,50883,1885],{"class":912},[250,50885,50886,50888,50890,50892,50894,50896,50898,50900,50902,50904],{"class":252,"line":132},[250,50887,26559],{"class":774},[250,50889,1434],{"class":912},[250,50891,26564],{"class":774},[250,50893,1434],{"class":912},[250,50895,26594],{"class":778},[250,50897,26572],{"class":912},[250,50899,26575],{"class":774},[250,50901,1434],{"class":912},[250,50903,24925],{"class":782},[250,50905,1885],{"class":912},[250,50907,50908,50910,50912,50914,50916,50918,50920,50922,50924,50926],{"class":252,"line":310},[250,50909,26559],{"class":774},[250,50911,1434],{"class":912},[250,50913,26564],{"class":774},[250,50915,1434],{"class":912},[250,50917,26617],{"class":778},[250,50919,26572],{"class":912},[250,50921,26575],{"class":774},[250,50923,1434],{"class":912},[250,50925,24948],{"class":782},[250,50927,1885],{"class":912},[250,50929,50930,50932,50934,50936,50938,50940,50942,50944,50946,50948],{"class":252,"line":316},[250,50931,26559],{"class":774},[250,50933,1434],{"class":912},[250,50935,26564],{"class":774},[250,50937,1434],{"class":912},[250,50939,26640],{"class":778},[250,50941,26572],{"class":912},[250,50943,26575],{"class":774},[250,50945,1434],{"class":912},[250,50947,24972],{"class":782},[250,50949,1885],{"class":912},[250,50951,50952,50954,50956,50958,50960,50962,50964,50966,50968,50970],{"class":252,"line":322},[250,50953,26559],{"class":774},[250,50955,1434],{"class":912},[250,50957,26564],{"class":774},[250,50959,1434],{"class":912},[250,50961,26663],{"class":778},[250,50963,26572],{"class":912},[250,50965,26575],{"class":774},[250,50967,1434],{"class":912},[250,50969,24995],{"class":782},[250,50971,1885],{"class":912},[250,50973,50974],{"class":252,"line":328},[250,50975,6749],{"class":912},[250,50977,50978],{"class":252,"line":334},[250,50979,795],{"emptyLinePlaceholder":129},[250,50981,50982,50984,50986,50988,50990,50992],{"class":252,"line":340},[250,50983,26543],{"class":774},[250,50985,1434],{"class":912},[250,50987,26690],{"class":782},[250,50989,13157],{"class":912},[250,50991,1115],{"class":786},[250,50993,1118],{"class":912},[250,50995,50996,50998,51000,51002,51004,51006,51008,51010,51012,51014],{"class":252,"line":346},[250,50997,26559],{"class":774},[250,50999,1434],{"class":912},[250,51001,26564],{"class":774},[250,51003,1434],{"class":912},[250,51005,26709],{"class":778},[250,51007,26572],{"class":912},[250,51009,26575],{"class":774},[250,51011,1434],{"class":912},[250,51013,24900],{"class":782},[250,51015,1885],{"class":912},[250,51017,51018,51020,51022,51024,51026,51028,51030,51032,51034,51036,51038],{"class":252,"line":352},[250,51019,26559],{"class":774},[250,51021,1434],{"class":912},[250,51023,26564],{"class":774},[250,51025,1434],{"class":912},[250,51027,2261],{"class":786},[250,51029,1297],{"class":778},[250,51031,26572],{"class":912},[250,51033,26575],{"class":774},[250,51035,1434],{"class":912},[250,51037,24995],{"class":782},[250,51039,1885],{"class":912},[250,51041,51042],{"class":252,"line":358},[250,51043,6749],{"class":912},[250,51045,51046],{"class":252,"line":364},[250,51047,1077],{"class":912},[250,51049,51050],{"class":252,"line":370},[250,51051,795],{"emptyLinePlaceholder":129},[250,51053,51054,51056,51058,51060,51062,51064],{"class":252,"line":376},[250,51055,26527],{"class":774},[250,51057,1434],{"class":912},[250,51059,26764],{"class":782},[250,51061,13157],{"class":912},[250,51063,1115],{"class":786},[250,51065,1118],{"class":912},[250,51067,51068,51070,51072,51074,51076,51078],{"class":252,"line":382},[250,51069,26543],{"class":774},[250,51071,1434],{"class":912},[250,51073,26779],{"class":782},[250,51075,13157],{"class":912},[250,51077,1115],{"class":786},[250,51079,1118],{"class":912},[250,51081,51082,51084,51086,51088,51090,51092,51094,51096,51098,51100],{"class":252,"line":388},[250,51083,26559],{"class":774},[250,51085,1434],{"class":912},[250,51087,26794],{"class":774},[250,51089,1434],{"class":912},[250,51091,26799],{"class":778},[250,51093,26572],{"class":912},[250,51095,26575],{"class":774},[250,51097,1434],{"class":912},[250,51099,1283],{"class":778},[250,51101,1885],{"class":912},[250,51103,51104,51106,51108,51110,51112,51114,51116,51118,51120,51122],{"class":252,"line":393},[250,51105,26559],{"class":774},[250,51107,1434],{"class":912},[250,51109,26794],{"class":774},[250,51111,1434],{"class":912},[250,51113,26822],{"class":778},[250,51115,26572],{"class":912},[250,51117,26575],{"class":774},[250,51119,1434],{"class":912},[250,51121,1236],{"class":778},[250,51123,1885],{"class":912},[250,51125,51126,51128,51130,51132,51134,51136,51138,51140,51142,51144],{"class":252,"line":399},[250,51127,26559],{"class":774},[250,51129,1434],{"class":912},[250,51131,26794],{"class":774},[250,51133,1434],{"class":912},[250,51135,26845],{"class":778},[250,51137,26572],{"class":912},[250,51139,26575],{"class":774},[250,51141,1434],{"class":912},[250,51143,25009],{"class":778},[250,51145,1885],{"class":912},[250,51147,51148],{"class":252,"line":405},[250,51149,6749],{"class":912},[250,51151,51152],{"class":252,"line":410},[250,51153,1077],{"class":912},[250,51155,51156],{"class":252,"line":415},[250,51157,795],{"emptyLinePlaceholder":129},[250,51159,51160,51162,51164,51166,51168,51170],{"class":252,"line":420},[250,51161,26527],{"class":774},[250,51163,1434],{"class":912},[250,51165,26876],{"class":782},[250,51167,13157],{"class":912},[250,51169,1115],{"class":786},[250,51171,1118],{"class":912},[250,51173,51174,51176,51178,51180,51182,51184],{"class":252,"line":426},[250,51175,26543],{"class":774},[250,51177,1434],{"class":912},[250,51179,26891],{"class":782},[250,51181,13157],{"class":912},[250,51183,1115],{"class":786},[250,51185,1118],{"class":912},[250,51187,51188,51190,51192,51194,51196],{"class":252,"line":431},[250,51189,6403],{"class":786},[250,51191,26904],{"class":778},[250,51193,1187],{"class":786},[250,51195,25302],{"class":774},[250,51197,25520],{"class":912},[250,51199,51200,51202,51204,51206,51208,51210,51212],{"class":252,"line":436},[250,51201,26915],{"class":912},[250,51203,25528],{"class":782},[250,51205,25531],{"class":912},[250,51207,24906],{"class":778},[250,51209,25537],{"class":912},[250,51211,25577],{"class":778},[250,51213,1219],{"class":912},[250,51215,51216,51218,51220,51222,51224,51226,51228],{"class":252,"line":442},[250,51217,26915],{"class":912},[250,51219,26934],{"class":782},[250,51221,25531],{"class":912},[250,51223,24930],{"class":778},[250,51225,25537],{"class":912},[250,51227,26943],{"class":778},[250,51229,1219],{"class":912},[250,51231,51232],{"class":252,"line":447},[250,51233,26950],{"class":912},[250,51235,51236,51238,51240,51242,51244,51246],{"class":252,"line":453},[250,51237,26559],{"class":774},[250,51239,26957],{"class":912},[250,51241,26575],{"class":774},[250,51243,1434],{"class":912},[250,51245,26964],{"class":778},[250,51247,1885],{"class":912},[250,51249,51250],{"class":252,"line":459},[250,51251,6749],{"class":912},[250,51253,51254],{"class":252,"line":465},[250,51255,795],{"emptyLinePlaceholder":129},[250,51257,51258,51260,51262,51264,51266,51268],{"class":252,"line":471},[250,51259,26543],{"class":774},[250,51261,1434],{"class":912},[250,51263,26983],{"class":782},[250,51265,13157],{"class":912},[250,51267,1115],{"class":786},[250,51269,1118],{"class":912},[250,51271,51272,51274,51276,51278,51280,51282,51284,51286],{"class":252,"line":2201},[250,51273,26559],{"class":774},[250,51275,1434],{"class":912},[250,51277,26998],{"class":774},[250,51279,27001],{"class":912},[250,51281,26575],{"class":774},[250,51283,1434],{"class":912},[250,51285,3542],{"class":778},[250,51287,1885],{"class":912},[250,51289,51290],{"class":252,"line":2207},[250,51291,6749],{"class":912},[250,51293,51294],{"class":252,"line":2213},[250,51295,1077],{"class":912},[250,51297,51298],{"class":252,"line":2218},[250,51299,795],{"emptyLinePlaceholder":129},[250,51301,51302,51304,51306,51308,51310,51312],{"class":252,"line":2223},[250,51303,26527],{"class":774},[250,51305,1434],{"class":912},[250,51307,27030],{"class":782},[250,51309,13157],{"class":912},[250,51311,1115],{"class":786},[250,51313,1118],{"class":912},[250,51315,51316,51318,51320,51322,51324,51326],{"class":252,"line":2239},[250,51317,26543],{"class":774},[250,51319,1434],{"class":912},[250,51321,27045],{"class":782},[250,51323,13157],{"class":912},[250,51325,1115],{"class":786},[250,51327,1118],{"class":912},[250,51329,51330,51332,51334,51336,51338,51340,51342,51344,51346,51348,51350,51352,51354],{"class":252,"line":2244},[250,51331,6403],{"class":786},[250,51333,27058],{"class":778},[250,51335,1187],{"class":786},[250,51337,25608],{"class":774},[250,51339,27065],{"class":912},[250,51341,24953],{"class":778},[250,51343,7128],{"class":912},[250,51345,24930],{"class":778},[250,51347,7128],{"class":912},[250,51349,24906],{"class":778},[250,51351,27078],{"class":912},[250,51353,1590],{"class":778},[250,51355,1885],{"class":912},[250,51357,51358,51360,51362,51364,51366,51368,51370,51372,51374,51376],{"class":252,"line":2267},[250,51359,26559],{"class":774},[250,51361,27089],{"class":912},[250,51363,27092],{"class":774},[250,51365,27065],{"class":912},[250,51367,24930],{"class":778},[250,51369,7128],{"class":912},[250,51371,24906],{"class":778},[250,51373,7128],{"class":912},[250,51375,1590],{"class":778},[250,51377,25584],{"class":912},[250,51379,51380],{"class":252,"line":2301},[250,51381,6749],{"class":912},[250,51383,51384],{"class":252,"line":2306},[250,51385,795],{"emptyLinePlaceholder":129},[250,51387,51388,51390,51392,51394,51396,51398],{"class":252,"line":2320},[250,51389,26543],{"class":774},[250,51391,1434],{"class":912},[250,51393,27123],{"class":782},[250,51395,13157],{"class":912},[250,51397,1115],{"class":786},[250,51399,1118],{"class":912},[250,51401,51402,51404,51406,51408,51410,51412,51414,51416,51418,51420],{"class":252,"line":2340},[250,51403,6403],{"class":786},[250,51405,27136],{"class":778},[250,51407,1187],{"class":786},[250,51409,7123],{"class":912},[250,51411,24953],{"class":778},[250,51413,7128],{"class":912},[250,51415,24930],{"class":778},[250,51417,7128],{"class":912},[250,51419,26569],{"class":778},[250,51421,1317],{"class":912},[250,51423,51424,51426,51428,51430,51432,51434,51436,51438],{"class":252,"line":2360},[250,51425,26559],{"class":774},[250,51427,1434],{"class":912},[250,51429,27161],{"class":774},[250,51431,27164],{"class":912},[250,51433,1590],{"class":778},[250,51435,26572],{"class":912},[250,51437,27092],{"class":774},[250,51439,27173],{"class":912},[250,51441,51442],{"class":252,"line":2397},[250,51443,6749],{"class":912},[250,51445,51446],{"class":252,"line":2402},[250,51447,1077],{"class":912},[250,51449,51450],{"class":252,"line":2407},[250,51451,795],{"emptyLinePlaceholder":129},[250,51453,51454,51456,51458,51460,51462,51464],{"class":252,"line":6667},[250,51455,26527],{"class":774},[250,51457,1434],{"class":912},[250,51459,27194],{"class":782},[250,51461,13157],{"class":912},[250,51463,1115],{"class":786},[250,51465,1118],{"class":912},[250,51467,51468,51470,51472,51474,51476,51478],{"class":252,"line":6672},[250,51469,26543],{"class":774},[250,51471,1434],{"class":912},[250,51473,27209],{"class":782},[250,51475,13157],{"class":912},[250,51477,1115],{"class":786},[250,51479,1118],{"class":912},[250,51481,51482,51484,51486,51488,51490,51492,51494,51496,51498,51500,51502,51504,51506,51508,51510],{"class":252,"line":6688},[250,51483,6403],{"class":786},[250,51485,27222],{"class":778},[250,51487,1187],{"class":786},[250,51489,25931],{"class":774},[250,51491,27065],{"class":912},[250,51493,24906],{"class":778},[250,51495,7128],{"class":912},[250,51497,24930],{"class":778},[250,51499,7128],{"class":912},[250,51501,24953],{"class":778},[250,51503,7128],{"class":912},[250,51505,15548],{"class":778},[250,51507,7128],{"class":912},[250,51509,27247],{"class":778},[250,51511,25584],{"class":912},[250,51513,51514,51516,51518,51520,51522,51524],{"class":252,"line":6694},[250,51515,26559],{"class":774},[250,51517,27256],{"class":912},[250,51519,26575],{"class":774},[250,51521,1434],{"class":912},[250,51523,24953],{"class":778},[250,51525,1885],{"class":912},[250,51527,51528,51530,51532,51534,51536,51538],{"class":252,"line":6707},[250,51529,26559],{"class":774},[250,51531,27271],{"class":912},[250,51533,26575],{"class":774},[250,51535,1434],{"class":912},[250,51537,24953],{"class":778},[250,51539,1885],{"class":912},[250,51541,51542,51544,51546,51548,51550,51552],{"class":252,"line":6716},[250,51543,26559],{"class":774},[250,51545,27286],{"class":912},[250,51547,26575],{"class":774},[250,51549,1434],{"class":912},[250,51551,24906],{"class":778},[250,51553,1885],{"class":912},[250,51555,51556,51558,51560,51562,51564,51566],{"class":252,"line":6722},[250,51557,26559],{"class":774},[250,51559,27301],{"class":912},[250,51561,26575],{"class":774},[250,51563,1434],{"class":912},[250,51565,27247],{"class":778},[250,51567,1885],{"class":912},[250,51569,51570,51572,51574,51576,51578,51580],{"class":252,"line":6734},[250,51571,26559],{"class":774},[250,51573,27316],{"class":912},[250,51575,26575],{"class":774},[250,51577,1434],{"class":912},[250,51579,1297],{"class":778},[250,51581,1885],{"class":912},[250,51583,51584],{"class":252,"line":6746},[250,51585,6749],{"class":912},[250,51587,51588],{"class":252,"line":6752},[250,51589,1077],{"class":912},[20,51591,27335],{},[47,51593,51594],{"className":758,"code":27338,"language":761,"meta":55,"style":55},[39,51595,51596],{"__ignoreMap":55},[250,51597,51598,51600],{"class":252,"line":253},[250,51599,24571],{"class":774},[250,51601,27347],{"class":782},[161,51603,51604],{"icon":27350,"title":27351},[20,51605,27354,51606,27358,51608,27362],{},[39,51607,27357],{},[39,51609,27361],{},[15,51611,27366],{"id":27365},[20,51613,1003,51614,1007],{},[39,51615,27371],{},[47,51617,51618],{"className":1010,"code":27374,"filename":27371,"language":1012,"meta":55,"style":55},[39,51619,51620,51632,51636,51646,51650,51658,51666,51678,51686,51690],{"__ignoreMap":55},[250,51621,51622,51624,51626,51628,51630],{"class":252,"line":253},[250,51623,1763],{"class":786},[250,51625,4280],{"class":912},[250,51627,1769],{"class":786},[250,51629,27387],{"class":782},[250,51631,1379],{"class":912},[250,51633,51634],{"class":252,"line":113},[250,51635,795],{"emptyLinePlaceholder":129},[250,51637,51638,51640,51642,51644],{"class":252,"line":110},[250,51639,1019],{"class":786},[250,51641,1022],{"class":786},[250,51643,4300],{"class":774},[250,51645,1028],{"class":912},[250,51647,51648],{"class":252,"line":269},[250,51649,27408],{"class":912},[250,51651,51652,51654,51656],{"class":252,"line":275},[250,51653,27413],{"class":912},[250,51655,27416],{"class":782},[250,51657,14000],{"class":912},[250,51659,51660,51662,51664],{"class":252,"line":281},[250,51661,27423],{"class":912},[250,51663,1066],{"class":778},[250,51665,927],{"class":912},[250,51667,51668,51670,51672,51674,51676],{"class":252,"line":287},[250,51669,27432],{"class":912},[250,51671,27435],{"class":782},[250,51673,7128],{"class":912},[250,51675,27440],{"class":782},[250,51677,14000],{"class":912},[250,51679,51680,51682,51684],{"class":252,"line":293},[250,51681,27447],{"class":912},[250,51683,1066],{"class":778},[250,51685,927],{"class":912},[250,51687,51688],{"class":252,"line":299},[250,51689,1048],{"class":912},[250,51691,51692],{"class":252,"line":132},[250,51693,1077],{"class":912},[20,51695,27462],{},[561,51697,51698,51702,51704],{},[564,51699,27467,51700,2390],{},[39,51701,27470],{},[564,51703,27473],{},[564,51705,27476],{},[15,51707,27480],{"id":27479},[47,51709,51710],{"className":758,"code":27483,"language":761,"meta":55,"style":55},[39,51711,51712],{"__ignoreMap":55},[250,51713,51714,51716],{"class":252,"line":253},[250,51715,24571],{"class":774},[250,51717,27492],{"class":782},[20,51719,27495],{},[47,51721,51722],{"className":12725,"code":27498,"language":12727,"meta":55,"style":55},[39,51723,51724,51728,51732,51736,51740],{"__ignoreMap":55},[250,51725,51726],{"class":252,"line":253},[250,51727,27505],{},[250,51729,51730],{"class":252,"line":113},[250,51731,27510],{},[250,51733,51734],{"class":252,"line":110},[250,51735,27515],{},[250,51737,51738],{"class":252,"line":269},[250,51739,27520],{},[250,51741,51742],{"class":252,"line":275},[250,51743,27525],{},[24,51745,51746],{"type":631},[20,51747,51748,27532,51750,27538],{},[39,51749,24502],{},[203,51751,27537],{"href":27535,"rel":51752},[207],[15,51754,27542],{"id":27541},[20,51756,1003,51757,27547],{},[39,51758,904],{},[47,51760,51761],{"className":902,"code":27550,"filename":904,"language":905,"meta":55,"style":55},[39,51762,51763,51767,51777,51787,51797,51807,51817,51827,51837,51843,51849,51859,51869,51877,51881,51885,51895,51903],{"__ignoreMap":55},[250,51764,51765],{"class":252,"line":253},[250,51766,913],{"class":912},[250,51768,51769,51771,51773,51775],{"class":252,"line":113},[250,51770,27561],{"class":778},[250,51772,921],{"class":912},[250,51774,27566],{"class":782},[250,51776,927],{"class":912},[250,51778,51779,51781,51783,51785],{"class":252,"line":110},[250,51780,27573],{"class":778},[250,51782,921],{"class":912},[250,51784,27578],{"class":782},[250,51786,927],{"class":912},[250,51788,51789,51791,51793,51795],{"class":252,"line":269},[250,51790,27585],{"class":778},[250,51792,921],{"class":912},[250,51794,27590],{"class":782},[250,51796,927],{"class":912},[250,51798,51799,51801,51803,51805],{"class":252,"line":275},[250,51800,27597],{"class":778},[250,51802,921],{"class":912},[250,51804,27602],{"class":782},[250,51806,927],{"class":912},[250,51808,51809,51811,51813,51815],{"class":252,"line":281},[250,51810,27609],{"class":778},[250,51812,921],{"class":912},[250,51814,27614],{"class":782},[250,51816,927],{"class":912},[250,51818,51819,51821,51823,51825],{"class":252,"line":287},[250,51820,27621],{"class":778},[250,51822,921],{"class":912},[250,51824,27626],{"class":782},[250,51826,927],{"class":912},[250,51828,51829,51831,51833,51835],{"class":252,"line":293},[250,51830,27633],{"class":778},[250,51832,921],{"class":912},[250,51834,27638],{"class":782},[250,51836,927],{"class":912},[250,51838,51839,51841],{"class":252,"line":299},[250,51840,27645],{"class":778},[250,51842,935],{"class":912},[250,51844,51845,51847],{"class":252,"line":132},[250,51846,27652],{"class":778},[250,51848,935],{"class":912},[250,51850,51851,51853,51855,51857],{"class":252,"line":310},[250,51852,27659],{"class":778},[250,51854,921],{"class":912},[250,51856,27664],{"class":782},[250,51858,927],{"class":912},[250,51860,51861,51863,51865,51867],{"class":252,"line":316},[250,51862,27671],{"class":778},[250,51864,921],{"class":912},[250,51866,27676],{"class":782},[250,51868,927],{"class":912},[250,51870,51871,51873,51875],{"class":252,"line":322},[250,51872,27683],{"class":778},[250,51874,921],{"class":912},[250,51876,27688],{"class":782},[250,51878,51879],{"class":252,"line":328},[250,51880,3684],{"class":912},[250,51882,51883],{"class":252,"line":334},[250,51884,1048],{"class":912},[250,51886,51887,51889,51891,51893],{"class":252,"line":340},[250,51888,27701],{"class":778},[250,51890,27704],{"class":912},[250,51892,27707],{"class":782},[250,51894,14000],{"class":912},[250,51896,51897,51899,51901],{"class":252,"line":346},[250,51898,27714],{"class":778},[250,51900,921],{"class":912},[250,51902,27719],{"class":782},[250,51904,51905],{"class":252,"line":352},[250,51906,991],{"class":912},[20,51908,27726],{},[47,51910,51911],{"className":758,"code":27729,"language":761,"meta":55,"style":55},[39,51912,51913],{"__ignoreMap":55},[250,51914,51915,51917],{"class":252,"line":253},[250,51916,4226],{"class":774},[250,51918,27738],{"class":782},[15,51920,27742],{"id":27741},[20,51922,27745],{},[47,51924,51925],{"className":758,"code":27748,"language":761,"meta":55,"style":55},[39,51926,51927],{"__ignoreMap":55},[250,51928,51929,51931,51933],{"class":252,"line":253},[250,51930,4226],{"class":774},[250,51932,808],{"class":782},[250,51934,24583],{"class":782},[47,51936,51937],{"className":1010,"code":27761,"language":1012,"meta":55,"style":55},[39,51938,51939,51951,51955,51959,51971,51975,51979,51991,52007,52023,52039,52045,52049,52053,52083,52087,52091,52117],{"__ignoreMap":55},[250,51940,51941,51943,51945,51947,51949],{"class":252,"line":253},[250,51942,1763],{"class":786},[250,51944,27770],{"class":912},[250,51946,1769],{"class":786},[250,51948,27775],{"class":782},[250,51950,1379],{"class":912},[250,51952,51953],{"class":252,"line":113},[250,51954,795],{"emptyLinePlaceholder":129},[250,51956,51957],{"class":252,"line":110},[250,51958,27786],{"class":768},[250,51960,51961,51963,51965,51967,51969],{"class":252,"line":269},[250,51962,26564],{"class":774},[250,51964,1434],{"class":912},[250,51966,27795],{"class":778},[250,51968,27798],{"class":912},[250,51970,27801],{"class":768},[250,51972,51973],{"class":252,"line":275},[250,51974,795],{"emptyLinePlaceholder":129},[250,51976,51977],{"class":252,"line":281},[250,51978,27810],{"class":768},[250,51980,51981,51983,51985,51987,51989],{"class":252,"line":287},[250,51982,1181],{"class":786},[250,51984,27817],{"class":778},[250,51986,1187],{"class":786},[250,51988,25302],{"class":774},[250,51990,25520],{"class":912},[250,51992,51993,51995,51997,51999,52001,52003,52005],{"class":252,"line":293},[250,51994,25525],{"class":912},[250,51996,27830],{"class":782},[250,51998,25531],{"class":912},[250,52000,26799],{"class":778},[250,52002,25537],{"class":912},[250,52004,27839],{"class":778},[250,52006,1219],{"class":912},[250,52008,52009,52011,52013,52015,52017,52019,52021],{"class":252,"line":299},[250,52010,25525],{"class":912},[250,52012,27848],{"class":782},[250,52014,25531],{"class":912},[250,52016,27853],{"class":778},[250,52018,25537],{"class":912},[250,52020,25540],{"class":778},[250,52022,1219],{"class":912},[250,52024,52025,52027,52029,52031,52033,52035,52037],{"class":252,"line":132},[250,52026,25525],{"class":912},[250,52028,27866],{"class":782},[250,52030,25531],{"class":912},[250,52032,26822],{"class":778},[250,52034,25537],{"class":912},[250,52036,19138],{"class":778},[250,52038,1219],{"class":912},[250,52040,52041,52043],{"class":252,"line":310},[250,52042,27881],{"class":912},[250,52044,27884],{"class":768},[250,52046,52047],{"class":252,"line":316},[250,52048,795],{"emptyLinePlaceholder":129},[250,52050,52051],{"class":252,"line":322},[250,52052,27893],{"class":768},[250,52054,52055,52057,52059,52061,52063,52065,52067,52069,52071,52073,52075,52077,52079,52081],{"class":252,"line":328},[250,52056,1181],{"class":786},[250,52058,27058],{"class":778},[250,52060,1187],{"class":786},[250,52062,25608],{"class":774},[250,52064,27065],{"class":912},[250,52066,27908],{"class":778},[250,52068,7128],{"class":912},[250,52070,27913],{"class":778},[250,52072,7128],{"class":912},[250,52074,27918],{"class":778},[250,52076,7128],{"class":912},[250,52078,24906],{"class":778},[250,52080,27925],{"class":912},[250,52082,27928],{"class":768},[250,52084,52085],{"class":252,"line":334},[250,52086,795],{"emptyLinePlaceholder":129},[250,52088,52089],{"class":252,"line":340},[250,52090,27937],{"class":768},[250,52092,52093,52095,52097,52099,52101,52103,52105,52107,52109,52111,52113,52115],{"class":252,"line":346},[250,52094,27942],{"class":774},[250,52096,27065],{"class":912},[250,52098,24906],{"class":778},[250,52100,7128],{"class":912},[250,52102,25572],{"class":778},[250,52104,7128],{"class":912},[250,52106,27955],{"class":778},[250,52108,7128],{"class":912},[250,52110,27960],{"class":778},[250,52112,7128],{"class":912},[250,52114,26845],{"class":778},[250,52116,25584],{"class":912},[250,52118,52119],{"class":252,"line":352},[250,52120,27971],{"class":768},[15,52122,27975],{"id":27974},[47,52124,52125],{"className":758,"code":27978,"language":761,"meta":55,"style":55},[39,52126,52127,52141,52149,52157,52165,52173],{"__ignoreMap":55},[250,52128,52129,52131,52133,52135,52137,52139],{"class":252,"line":253},[250,52130,24571],{"class":774},[250,52132,24574],{"class":782},[250,52134,24577],{"class":782},[250,52136,24580],{"class":778},[250,52138,27993],{"class":782},[250,52140,27996],{"class":768},[250,52142,52143,52145,52147],{"class":252,"line":113},[250,52144,24571],{"class":774},[250,52146,808],{"class":782},[250,52148,28005],{"class":768},[250,52150,52151,52153,52155],{"class":252,"line":110},[250,52152,24571],{"class":774},[250,52154,28012],{"class":782},[250,52156,28015],{"class":768},[250,52158,52159,52161,52163],{"class":252,"line":269},[250,52160,24571],{"class":774},[250,52162,28022],{"class":782},[250,52164,28025],{"class":768},[250,52166,52167,52169,52171],{"class":252,"line":275},[250,52168,24571],{"class":774},[250,52170,28032],{"class":782},[250,52172,28035],{"class":768},[250,52174,52175,52177,52179],{"class":252,"line":281},[250,52176,4226],{"class":774},[250,52178,28042],{"class":782},[250,52180,28045],{"class":768},[20,52182,28048,52183,2230],{},[39,52184,27371],{},[10834,52186,52187,52189],{},[2459,52188,28056],{"id":28055},[20,52190,28059,52191,28062],{},[39,52192,24502],{},[15,52194,28066],{"id":28065},[561,52196,52197,52201,52205,52209,52213],{},[564,52198,52199,28074],{},[546,52200,28073],{},[564,52202,52203,28080],{},[546,52204,28079],{},[564,52206,52207,28086],{},[546,52208,28085],{},[564,52210,52211,28092],{},[546,52212,28091],{},[564,52214,52215,28098],{},[546,52216,28097],{},[15,52218,3352],{"id":3351},[20,52220,28103,52221,28107,52223,28110],{},[39,52222,28106],{},[39,52224,24502],{},[20,52226,28113],{},[20,52228,28116],{},[500,52230,28119],{},{"title":55,"searchDepth":110,"depth":110,"links":52232},[52233,52234,52235,52236],{"id":24848,"depth":113,"text":24849},{"id":25267,"depth":113,"text":25268},{"id":25592,"depth":113,"text":25593},{"id":25896,"depth":113,"text":25897,"children":52237},[52238],{"id":28055,"depth":110,"text":28056},{"type":12,"value":52240},[52241,52243,52245,52249],[15,52242,541],{"id":540},[20,52244,24481],{},[20,52246,24484,52247,24488],{},[39,52248,24487],{},[20,52250,24491,52251,24495,52253,24499,52255,24503],{},[546,52252,24494],{},[546,52254,24498],{},[39,52256,24502],{},[28150,126,28151,4226,28152,28153,28154,8234],{},{"title":24473,"description":28129},"viteplus-teacher-toolkit-package",{"id":28161,"title":28162,"author":52262,"body":52263,"canonical":115,"categories":115,"date":28128,"description":28726,"excerpt":52676,"extension":118,"img":28148,"keywords":52691,"language":3510,"meta":52692,"navigation":129,"ogImage":115,"path":28748,"rating":275,"readTime":293,"seo":52693,"stem":28750,"tag":3515,"__hash__":28751,"slug":52694},{"name":8,"img":28164,"website":535},{"type":12,"value":52264,"toc":52670},[52265,52267,52269,52278,52286,52288,52290,52324,52334,52336,52338,52340,52356,52358,52372,52374,52384,52386,52398,52400,52402,52404,52456,52460,52478,52482,52484,52500,52522,52534,52538,52540,52550,52554,52558,52582,52584,52588,52592,52602,52604,52606,52608,52618,52623,52625,52630,52636,52638,52660,52662,52664,52668],[15,52266,541],{"id":540},[20,52268,28171],{},[20,52270,52271,28176,52273,28182,52276,2230],{},[546,52272,24498],{},[203,52274,28181],{"href":28179,"rel":52275},[207],[39,52277,24571],{},[24,52279,52280],{"type":631},[20,52281,28189,52282,28192,52284,28196],{},[39,52283,24571],{},[39,52285,28195],{},[15,52287,28200],{"id":28199},[20,52289,28203],{},[561,52291,52292,52297,52302,52307,52312,52317,52322],{},[564,52293,52294,28213],{},[203,52295,28212],{"href":28210,"rel":52296},[207],[564,52298,52299,28221],{},[203,52300,28220],{"href":28218,"rel":52301},[207],[564,52303,52304,28229],{},[203,52305,28228],{"href":28226,"rel":52306},[207],[564,52308,52309,28236],{},[203,52310,28235],{"href":28226,"rel":52311},[207],[564,52313,52314,28244],{},[203,52315,28243],{"href":28241,"rel":52316},[207],[564,52318,52319,28250],{},[203,52320,27537],{"href":27535,"rel":52321},[207],[564,52323,28253],{},[161,52325,52326],{"icon":1713,"title":28256},[20,52327,28259,52328,28263,52330,28267,52332,28271],{},[546,52329,28262],{},[546,52331,28266],{},[546,52333,28270],{},[15,52335,21211],{"id":21210},[31,52337,21218],{"id":21217},[20,52339,28278],{},[47,52341,52342],{"className":758,"code":28281,"language":761,"meta":55,"style":55},[39,52343,52344],{"__ignoreMap":55},[250,52345,52346,52348,52350,52352,52354],{"class":252,"line":253},[250,52347,775],{"class":774},[250,52349,779],{"class":778},[250,52351,28292],{"class":782},[250,52353,787],{"class":786},[250,52355,790],{"class":774},[20,52357,28299],{},[47,52359,52360],{"className":758,"code":28302,"language":761,"meta":55,"style":55},[39,52361,52362],{"__ignoreMap":55},[250,52363,52364,52366,52368,52370],{"class":252,"line":253},[250,52365,28309],{"class":774},[250,52367,28312],{"class":782},[250,52369,787],{"class":786},[250,52371,28317],{"class":774},[20,52373,28320],{},[47,52375,52376],{"className":758,"code":28323,"language":761,"meta":55,"style":55},[39,52377,52378],{"__ignoreMap":55},[250,52379,52380,52382],{"class":252,"line":253},[250,52381,24571],{"class":774},[250,52383,28332],{"class":782},[31,52385,28336],{"id":28335},[47,52387,52388],{"className":758,"code":28339,"language":761,"meta":55,"style":55},[39,52389,52390],{"__ignoreMap":55},[250,52391,52392,52394,52396],{"class":252,"line":253},[250,52393,24571],{"class":774},[250,52395,24574],{"class":782},[250,52397,28350],{"class":782},[20,52399,28353],{},[15,52401,28357],{"id":28356},[20,52403,28360],{},[47,52405,52406],{"className":758,"code":28363,"language":761,"meta":55,"style":55},[39,52407,52408,52416,52424,52432,52440,52448],{"__ignoreMap":55},[250,52409,52410,52412,52414],{"class":252,"line":253},[250,52411,24571],{"class":774},[250,52413,24574],{"class":782},[250,52415,28374],{"class":768},[250,52417,52418,52420,52422],{"class":252,"line":113},[250,52419,24571],{"class":774},[250,52421,808],{"class":782},[250,52423,28383],{"class":768},[250,52425,52426,52428,52430],{"class":252,"line":110},[250,52427,24571],{"class":774},[250,52429,28390],{"class":782},[250,52431,28393],{"class":768},[250,52433,52434,52436,52438],{"class":252,"line":269},[250,52435,24571],{"class":774},[250,52437,28012],{"class":782},[250,52439,28402],{"class":768},[250,52441,52442,52444,52446],{"class":252,"line":275},[250,52443,24571],{"class":774},[250,52445,28022],{"class":782},[250,52447,28411],{"class":768},[250,52449,52450,52452,52454],{"class":252,"line":281},[250,52451,24571],{"class":774},[250,52453,28418],{"class":782},[250,52455,28421],{"class":768},[20,52457,28424,52458,28427],{},[39,52459,24571],{},[10834,52461,52462,52464],{},[2459,52463,12902],{"id":12901},[20,52465,28434,52466,7128,52468,7128,52470,7128,52472,7128,52474,28449,52476,28452],{},[39,52467,28437],{},[39,52469,4226],{},[39,52471,28442],{},[39,52473,28445],{},[39,52475,28448],{},[39,52477,24571],{},[15,52479,28456,52480],{"id":28455},[39,52481,28459],{},[20,52483,28462],{},[561,52485,52486,52490,52494],{},[564,52487,52488,28470],{},[546,52489,28469],{},[564,52491,52492,28476],{},[546,52493,28475],{},[564,52495,52496,28482,52498],{},[546,52497,28481],{},[39,52499,28485],{},[47,52501,52502],{"className":758,"code":28488,"language":761,"meta":55,"style":55},[39,52503,52504,52512],{"__ignoreMap":55},[250,52505,52506,52508,52510],{"class":252,"line":253},[250,52507,24571],{"class":774},[250,52509,28012],{"class":782},[250,52511,28499],{"class":768},[250,52513,52514,52516,52518,52520],{"class":252,"line":113},[250,52515,24571],{"class":774},[250,52517,28012],{"class":782},[250,52519,28508],{"class":778},[250,52521,28511],{"class":768},[24,52523,52524],{"type":26},[20,52525,52526,28518,52528,7128,52530,28525,52532,28528],{},[39,52527,28459],{},[39,52529,28521],{},[39,52531,28524],{},[39,52533,28485],{},[15,52535,28532,52536],{"id":28531},[39,52537,27357],{},[20,52539,28537],{},[561,52541,52542,52544,52546,52548],{},[564,52543,28542],{},[564,52545,28545],{},[564,52547,28548],{},[564,52549,28551],{},[15,52551,28555,52552],{"id":28554},[39,52553,28558],{},[20,52555,28561,52556,28564],{},[39,52557,28558],{},[47,52559,52560],{"className":758,"code":28567,"language":761,"meta":55,"style":55},[39,52561,52562,52572],{"__ignoreMap":55},[250,52563,52564,52566,52568,52570],{"class":252,"line":253},[250,52565,24571],{"class":774},[250,52567,1707],{"class":782},[250,52569,28418],{"class":782},[250,52571,28580],{"class":768},[250,52573,52574,52576,52578,52580],{"class":252,"line":113},[250,52575,24571],{"class":774},[250,52577,1707],{"class":782},[250,52579,28022],{"class":782},[250,52581,28591],{"class":768},[20,52583,28594],{},[15,52585,28598,52586],{"id":28597},[39,52587,24502],{},[20,52589,28603,52590,28606],{},[39,52591,24502],{},[47,52593,52594],{"className":758,"code":27483,"language":761,"meta":55,"style":55},[39,52595,52596],{"__ignoreMap":55},[250,52597,52598,52600],{"class":252,"line":253},[250,52599,24571],{"class":774},[250,52601,27492],{"class":782},[20,52603,28619],{},[15,52605,28623],{"id":28622},[20,52607,28626],{},[47,52609,52610],{"className":758,"code":28629,"language":761,"meta":55,"style":55},[39,52611,52612],{"__ignoreMap":55},[250,52613,52614,52616],{"class":252,"line":253},[250,52615,24571],{"class":774},[250,52617,28638],{"class":782},[20,52619,28641,52620,28647],{},[203,52621,28646],{"href":28644,"rel":52622},[207],[15,52624,28651],{"id":28650},[20,52626,28654,52627,28659],{},[203,52628,555],{"href":28657,"rel":52629},[207],[161,52631,52632],{"icon":3246,"title":28662},[20,52633,28665,52634,28669],{},[39,52635,28668],{},[15,52637,28673],{"id":28672},[561,52639,52640,52644,52648,52652,52656],{},[564,52641,52642,28681],{},[546,52643,28680],{},[564,52645,52646,28687],{},[546,52647,28686],{},[564,52649,52650,28693],{},[546,52651,28692],{},[564,52653,52654,28699],{},[546,52655,28698],{},[564,52657,52658,28705],{},[546,52659,28704],{},[72,52661],{},[20,52663,28710],{},[20,52665,28713,52666,2230],{},[3587,52667,28716],{},[500,52669,28719],{},{"title":55,"searchDepth":110,"depth":110,"links":52671},[52672,52673],{"id":21217,"depth":113,"text":21218},{"id":28335,"depth":113,"text":28336,"children":52674},[52675],{"id":12901,"depth":110,"text":12902},{"type":12,"value":52677},[52678,52680,52682],[15,52679,541],{"id":540},[20,52681,28171],{},[20,52683,52684,28176,52686,28182,52689,2230],{},[546,52685,24498],{},[203,52687,28181],{"href":28179,"rel":52688},[207],[39,52690,24571],{},[28150,126,28743,28744,3509,8234,28745,28442,28746],{},{"title":28162,"description":28726},"viteplus-unified-toolchain",{"id":28753,"title":28754,"author":52696,"body":52697,"canonical":115,"categories":115,"date":11328,"description":28766,"excerpt":115,"extension":118,"img":119,"keywords":115,"language":115,"meta":52705,"navigation":129,"ogImage":115,"path":28768,"rating":115,"readTime":115,"seo":52706,"stem":28770,"tag":28771,"__hash__":28772,"slug":28760},{"name":8,"img":10},{"type":12,"value":52698,"toc":52703},[52699,52701],[15,52700,28754],{"id":28760},[20,52702,28763],{},{"title":55,"searchDepth":110,"depth":110,"links":52704},[],{},{"title":28754,"description":28766},1775877437529]